鍍金池/ 問(wèn)答/C  C++  數(shù)據(jù)庫(kù)/ ubuntu c語(yǔ)言操作mysql插入報(bào)錯(cuò)?

ubuntu c語(yǔ)言操作mysql插入報(bào)錯(cuò)?

一段簡(jiǎn)單的代碼:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<mysql/mysql.h>

#define HOST "localhost"
#define USRNAME "root"
#define PASSWORD "1234567"
#define DATABASE "staff_info_sys"

int main(){
    int num,cnt;
    MYSQL mysql;
    MYSQL_RES *res;
    MYSQL_ROW row;
    char query[100];
    int i=0;
    mysql_init(&mysql);
    if(mysql_real_connect(&mysql,HOST,USRNAME,PASSWORD,DATABASE,0,NULL,0)==NULL){
        printf("sql connect error %d: %s\n",mysql_errno(&mysql),mysql_error(&mysql));
        exit(1);
    }
    printf("sql connect success, id %ld\n",mysql.thread_id);

    while(1){
        i++;
        printf("plz in sql query (%d):",i);
        gets(query);
        if(mysql_real_query(&mysql,query,strlen(query))!=0){
            printf("query error %d: %s\n",mysql_errno(&mysql),mysql_error(&mysql));
            exit(1);
        }
        if((res=mysql_use_result(&mysql))==NULL){
            printf("use result error %d: %s\n",mysql_errno(&mysql),mysql_error(&mysql));
            exit(1);
        }
        for(cnt=0;cnt<=mysql_field_count(&mysql);cnt++){
            if((row=mysql_fetch_row(res))==NULL)
                break;
            for(num=0;num<=mysql_num_fields(res);num++)
                printf("%s",row[num]);
            printf("\n");
        }
        mysql_free_result(res);
        printf("mysql query success!\n");

    }
    mysql_close(&mysql);
    return 0;
}

每當(dāng)我在外部插入數(shù)據(jù)時(shí),都會(huì)報(bào)錯(cuò)use result error 0: 。有點(diǎn)不太懂,這說(shuō)明我沒(méi)錯(cuò),但是肯定res==NULL,而我去mysql中查看時(shí)都發(fā)現(xiàn)插入成功,想請(qǐng)教一下大家這是怎么回事,要怎么該,謝謝。

回答
編輯回答
朕略傻

使用mysql_use_result()時(shí),必須執(zhí)行mysql_fetch_row(),直至返回NULL值,否則,未獲取的行將作為下一個(gè)檢索的一部分返回。
https://baike.baidu.com/item/...

2018年7月18日 02:02