C中mysql_查询的返回错误值是多少?

C中mysql_查询的返回错误值是多少?,c,mysql,C,Mysql,各位, 从下面的代码 int a = mysql_query(conn,"INSERT into data VALUES (NULL,'tes','aja')); 为什么我可以确保mysql\u查询是做假设的事情,因为我尝试了错误的sql查询,它变成了相同的返回值 从文件mysql.h中的mysql_查询函数: int STDCALL mysql_query(MYSQL *mysql, const char *q); 是否有方法检查查询字符串是否有效并正确查询?根据规则,成功时应返回

各位, 从下面的代码

int a = mysql_query(conn,"INSERT into data VALUES (NULL,'tes','aja'));
为什么我可以确保mysql\u查询是做假设的事情,因为我尝试了错误的sql查询,它变成了相同的返回值

从文件mysql.h中的mysql_查询函数:

int     STDCALL mysql_query(MYSQL *mysql, const char *q);

是否有方法检查查询字符串是否有效并正确查询?

根据规则,成功时应返回零,失败时应返回非零。您确定它为无效查询返回0值吗?

我很惊讶,我不得不使用的MySQL数据库没有在“错误查询”上返回错误。(MySQL数据库不在我的管理范围内)你不写你的查询有什么确切的问题;问题是什么。我想我的问题可能与你的问题相似

(简化了示例表。)

我的表'T'带有cols'A'varchar[10]不为null,'B'varchar[10]

int a = mysql_query(conn,"INSERT INTO T (B) VALUE ('data')");
问题是结果正常,错误消息为空,并且只存在一个警告

解决方案是不仅测试错误,还测试警告

if ( mysql_errno( conn ) || mysql_warning_count( conn ) )
  result = 1; //error
else
  result = 0; //OK
如果需要显示警告/错误,下面是我的简单示例代码:

static void display_warnings( MYSQL *conn )
{
  MYSQL_RES *sql_result;
  MYSQL_ROW row;
  if ( ( conn == NULL ) || mysql_query( conn, "SHOW WARNINGS" ) )
  {
    printf( "Can not display list of errors/warnings!\n" );
    return;
  }

  sql_result = mysql_store_result( conn );
  if ( ( sql_result == NULL ) || ( sql_result->row_count == 0 ) )
  {
    printf( "Can not display list of errors/warnings!\n" );
    if ( sql_result )
      mysql_free_result( sql_result );
    return;
  }

  row = mysql_fetch_row( sql_result );
  if ( row == NULL )
  {
    printf( "Can not display list of errors/warnings!\n" );
    mysql_free_result( sql_result );
    return;
  }

  do
  {
    // Format: "message [Type: number]"
    printf( "%s [%s: %s]\n", row[2], row[0], row[1] );
    row = mysql_fetch_row( sql_result );
  } while ( row );
  mysql_free_result( sql_result );
}
我需要处理的是,所有给定的数据必须是正确的,没有遗漏。缺失数据(根据表定义)不可接受;数据微调(“ABC12345678”更改为“ABC1234567”)也是不可接受的。这两个问题仅作为警告处理。因此,我将所有警告作为错误处理