4月 12

C 语言 读取mysql

测试环境:CentOS 5.4 64位 mysql5.5.20
mysql使用bin安装,安装在/program/mysql目录

代码

#include 
#include 
#include 
#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));}

int main(int argc,char **argv )
{
    MYSQL *sql_p;
    MYSQL_RES *result_p;
    MYSQL_ROW row_p;
    int res;
    int len;
    sql_p=mysql_init(NULL);
    if(sql_p==NULL){
        printf("Init error!\n");
        exit(1);
    }

    sql_p=mysql_real_connect(sql_p,"192.168.1.41","root","test",
                    "mysql",0,NULL,0);
    if(!sql_p){
        fprintf(stderr,"%d:%s\n",mysql_errno(sql_p),mysql_error(sql_p));
        exit(1);
    }

    res=mysql_query(sql_p,"SELECT * FROM admin");
    if(res){
        printf("Select error!\n");
        exit(1);
    }
    
    result_p=mysql_use_result(sql_p);
    if(!result_p){
        printf("mysql_use error!\n");
        exit(1);
    }

    row_p=mysql_fetch_row(result_p);
    GET_ARRAY_LEN(row_p,len);
    printf("%d\n",len);
    int i;
    for (i=0 ;i<20 ;i++)
      {if (row_p[i][1])
         printf("%s\n",row_p[i]);
       }
    mysql_close(sql_p);
    return 0;
}

编译语句
gcc -Wall cmysql.c -o cmysql -L /program/mysql/lib -I /program/mysql/include/ -lmysqlclient -lz

问题:
运行报错
./cmysql: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

解决办法:
32位操作系统运行下面一句
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/
64位操作系统运行下面一句
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/
再次编译通过。
在读取数据时还出现一个问题,如果没有数据,程序显示错误,这个我没有处理。