/ coding

MySQL C API 应用

alt='yoooooou'

最进在做一个c语言下的chatRoom小项目,并且打算采用mysql的c api来做一些聊天的记录的保存功能,
所以我在下面会列出一些用到的方法。

当然在

http://dev.mysql.com/doc/refman/5.0/en/c-api.html

里有最全面的api介绍

start

  1. 包含头文件
    include <mysql/mysql.h>

首先要包含mysql.h的头文件,如果你的mysql是通过apt-get/yum等包管理器
安装的话那么这个文件默认会在 */usr/include/mysql/目录下,否则你可以
使用ln -s 要链接的文件 链接到的文件 来做一个软链接指向
/usr/include/mysql/*目录

  1. 定义一些东西

     MYSQL mysql,*sock;    //定义数据库连接的句柄
    
     MYSQL_RES *res;       //查询结果集,结构类型
    
     MYSQL_ROW row ;       //存放一行查询结果的数组
    
     char query[100];      //存放查询sql语句字符串
    
  2. 初始化mysql链接

     mysql_init(&mysql); //初始化mysql
    
  3. 连接mysql database

     sock=mysql_real_connect(&mysql,"host","user","pwd","db_Name",port,NULL,0));
    
  4. 查询

     mysql_query(sock,query); //如果是insert,update,delete等操作,查询成功,为零,出错
     为非零,如果是select等操作,返回值同前面,而查询结果用 mysql_store_result()
     来获取
    
  5. 获取结果

     while((row = mysql_fetch_row(res)))  
     {
       printf("%s:%s\n",row[0],row[1]); 
     }
     //mysql_fetch_row()将从结果集中取出一条记录
    
  6. 释放并关闭连接

     mysql_free_result(res);
     mysql_close(sock);
     //这个就不解释了
    
  7. 注意事项

在用gcc进行编译时可能会提示

    Undefined symbols for architecture x86_64:
    "_mysql_error", referenced from:
    _main in test-64e4d4.o
    "_mysql_init", referenced from:
    _main in test-64e4d4.o
    "_mysql_num_fields", referenced from:
    _main in test-64e4d4.o
    "_mysql_query", referenced from:
    _main in test-64e4d4.o
    "_mysql_real_connect", referenced from:
    _main in test-64e4d4.o
    "_mysql_store_result", referenced from:
    _main in test-64e4d4.o
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
这是因为编译器没找到mysql相应的库文件而造成的,so,在编译时加上一句

    gcc test.c $(mysql_config --libs)
  1. 待续