在做程序開發時,總免不了要和數據庫打交道,在這裏分享一個連接 ,查詢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 中 所有的表: