mysql C api

1.初始化一个链接结构。

2.创建一个链接。

3.执行查询。

4.关闭链接。

MYSQL* conn;

首先,声明一个conn指针指向一个MYSQL结构体,这个结构体就是一个数据库连接句柄。

conn = mysql_init(NULL);

函数mysql_init将返回一个链接句柄。

 if (conn == NULL) {

     printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn));

     exit(1);

 }

函数mysql_real_connect建立一个到mysql数据库的链接。调用这个函数要提供 链接句柄、主机名、用户、密码等参数,最后四个参数依次是数据库名、端口、unix套接字和客户端标志。

mysql_query()  不能传二进制BLOB字段,因为二进制信息中的\0会被误判为语句结束。

 mysql_real_query()  则可以。
另外  mysql_real_query() 会比mysql_query() 略快一点儿。因为它不去检查你的SQL语句长度是多少。

 

 

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

 

检索一个结果集合的下一行。当在mysql_store_result()之后使用时,如果没有更多的行可检索时,mysql_fetch_row()返回NULL。当在mysql_use_result()之后使用时,当没有更多的行可检索时或如果出现一个错误,mysql_fetch_row()返回NULL。
在行中值的数量由mysql_num_fields(result)给出。如果row保存了从一个对用mysql_fetch_row()调用返回的值,指向该值的指针作为row[0]到row[mysql_num_fields(result)-1]来存取。在行中的NULL值由NULL指针指出。
在行中字段值的长度可以通过调用mysql_fetch_lengths()获得。空字段和包含NULL的字段长度都是 0;你可以通过检查该值的指针区分他们。如果指针是NULL,字段是NULL;否则字段是空的。
MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;
num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result)))
{
    unsigned long *lengths;
    lengths = mysql_fetch_lengths(result);
    for(i = 0; i < num_fields; i++)
    {
        printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL");
    }
    printf("\n");
}
 

mysql_close(conn);

mysql_query()  不能传二进制BLOB字段,因为二进制信息中的\0会被误判为语句结束。

 mysql_real_query()  则可以。
另外  mysql_real_query() 会比mysql_query() 略快一点儿。因为它不去检查你的SQL语句长度是多少。

posted @ 2014-03-10 11:29  lc_cnblog  阅读(483)  评论(0编辑  收藏  举报