mysql c api mysql查询函数dosn工作

时间:2017-08-02 06:19:05

标签: mysql c

我花了3个小时来弄清楚这个代码中我的问题是什么,以及为什么mysql_query不起作用...... 这是我的疑问:

`sprintf(quer, "INSERT INTO `tblRobotProcessQueue`(ProcessId,Protocol,SRC_IP,DST_IP,SRC_Port,DST_Port,`HostName`,`URL`,`Href`,DateAdd) VALUES(%d,%d,%d,%d,%d,%d,%s,%s,%s,%d )" ,pid*i, 6, 1234, 5345, 80, 44, "HostName", "URL", "Href", currentTime);` 

这是我的自定义db_query:

int _db_query(MYSQL *mysql_conn, char* sql ) {
    int ret = 0;

    if ( 0 == ( ret = mysql_ping( mysql_conn ) ) ) {

        if(!mysql_query( mysql_conn , sql )){
            PTRACE(0,0, "mysql_query can't run");
        }

        printf("ret is : %d\n", ret);

        //syslog ( LOG_INFO , "db_query( %u , [%s] )" , connection_id , sql );
        if ( 0 != ret && NULL != mysql_error( mysql_conn ) ) {

            syslog ( LOG_INFO , "Mysql query connection %s", mysql_error( mysql_conn ) );
            PTRACE(0,0, "FAIL HERE IN _DB_QUERY");
        }

    } else {
        PTRACE( 0 , 0 , "Mysql Ping Error connection %s" ,mysql_error( mysql_conn ) );

    }
    PTRACE(0,0, "reach to end of _db_query...\n");
    return ret;
}

当我运行我的程序时,我可以看到我的表中添加了phpmysqladnin的一些数据 但这部分在我的终端执行:PTRACE(0,0, "mysql_query can't run");
帮帮我们!

1 个答案:

答案 0 :(得分:0)

if(!mysql_query( mysql_conn , sql )){
    PTRACE(0,0, "mysql_query can't run");
}

这部分是问题所在。 mysql_query成功时返回0,失败时返回严格负值。因此,当函数实际成功时,您的条件会输出错误消息。确实if (!functionCall())实际上与if (functionCall() == 0)相同。

你也应该改变它:

if(mysql_query( mysql_conn , sql ) < 0){
    PTRACE(0,0, "mysql_query can't run");
}