在做程序开发时,总免不了要和数据库打交道,在这里分享一个连接 ,查询MySQL 数据库的小程序:
#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>
int main()
{
char server[] = "localhost";
char user[] = "root";
char passwd[] = "root.123";
char database[] = "mysql";
MYSQL *conn = mysql_init(NULL);// 初始化数据库环境
if(!conn) {
fprintf(stderr, "Failed to initialize mysql\n");
exit(1);
}
const unsigned int timeout = 7;
if(mysql_options(conn, MYSQL_OPT_CONNECT_TIMEOUT, &timeout)) //设置连接选项,这里设置连接超时为7s
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
if(!mysql_real_connect(conn, server, user, passwd, database, 0, NULL, 0))// 连接数据库
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
if(mysql_query(conn, "show tables"))// 执行 SQL 命令,这里执行“show tables”即显示当前数据库下所有的表
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
MYSQL_RES *res = mysql_use_result(conn);// 获得 result set
if(!res) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
exit(1);
}
MYSQL_ROW row;
printf("MYSQL tables in database <mysql>:\n");
printf("*********************************\n");
while((row=mysql_fetch_row(res))) { // 将结果输出到 stdout
printf("%s\n", row[0]);
}
printf("*********************************\n");
mysql_free_result(res); // 清理用于存储 result set 的内存
mysql_close(conn);//关闭数据库连接
printf("Finish Loading|\n");
return 0;
}
编译运行:
gcc -o test test.c -L/usr/local/mysql/lib -lmysqlclient
可以查看 mysql 中 所有的表: