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语句长度是多少。