如何知道表中的任何记录是否使用更新查询进行了更新。
我正在使用Mysql C API。.我曾在触发UPDATE查询后尝试存储mysql结果,但结果也总是返回NULL以便成功升级。任何帮助都会很棒。
谢谢
int main(void)
{
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
if ((conn = mysql_init(NULL)) == NULL)
{
fprintf(stderr, "Could not init DB\n");
return EXIT_FAILURE;
}
if (mysql_real_connect(conn, "localhost", "root", "password", "cpaas", 0, NULL, 0) == NULL)
{
fprintf(stderr, "DB Connection Error\n");
return EXIT_FAILURE;
}
if (mysql_query(conn, "update calldirection set callid='Hello' where callid='He'") != 0)
{
fprintf(stderr, "Query Failure\n");
return EXIT_FAILURE;
}
res = mysql_store_result(conn);
if(res == NULL){
printf("dssdg");
return 1;
}
if ((row = mysql_num_rows(res)) <= 0)
{
printf("FFFFFFF");
}
mysql_close(conn);
return EXIT_SUCCESS;
}
调用mysql_query()或mysql_real_query()之后,您必须调用每个语句的mysql_store_result()或mysql_use_result()成功生成结果集(SELECT,SHOW,DESCRIBE,EXPLAIN,CHECK TABLE,依此类推)。您还必须调用mysql_free_result()完成结果集后。
您不需要为其他调用mysql_store_result()或mysql_use_result()陈述,但不会造成任何损害或引起任何明显的后果如果在所有情况下都调用mysql_store_result(),则会降低性能。您可以通过检查以下语句来检测语句是否具有结果集:mysql_store_result()是否返回非零值(有关此内容的更多信息稍后)
mysql_store_result
对于除NULL
查询类型以外的查询返回(SELECT, SHOW, DESCRIBE, EXPLAIN, CHECK TABLE)
。
并且Update
查询不是其中之一,因此mysql_store_result
为此查询返回NULL。
经过将近1天的研发之后,我发现了mysql_affected_rows(* mysql)函数,该函数将返回为UPDATE查询更新的行数。