#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h> //函数调用头文件
#include <mysql/my_global.h> //全局函数的声明以及标准IO的头文件
int main()
{
MYSQL *conn;
//打印mysqlclient 版本号
printf("MYSQL client version:%s\n", mysql_get_client_info());
//mysql API初始化
conn = mysql_init(NULL);
//mysql API链接
if(!mysql_real_connect(conn, "localhost", "root", "123456", "lyytest", 0, NULL, 0)){
fprintf(stderr, "Failed to connect to database:Error:%s\n",mysql_error(conn));
goto END;
}
//mysql API 字符串转移 可防止恶意操作
char sql[1000] = "select * from lyyinfo";
char query[1000] = {0};
mysql_real_escape_string(conn, query, sql, strlen(sql));
//mysql API 查询链接是否正常并自动尝试在链接
while(mysql_ping(conn)){
// if(!mysql_real_connect(conn, "localhost", "root", "123456", "lyytest", 0, NULL, 0)){
// fprintf(stderr, "Failed to connect to database:Error:%s and try to connect again\n",mysql_error(conn));
sleep(1);
// }
}
//mysql API 查询
if(mysql_real_query(conn, query, (unsigned int)(strlen(query)))){
fprintf(stderr, "Failed to query database:Error:%s\n",mysql_error(conn));
goto END;
}
//mysql API 获得返回数据
MYSQL_RES *res;
res = mysql_store_result(conn);
if(res == NULL){
if(mysql_error(conn)){ //出错
fprintf(stderr, "Failed to get result for select, Error:%s\n",mysql_error(conn));
goto RES;
} //未返回数据
else if(mysql_field_count(conn) == 0){
unsigned int num_row = 0;
fprintf(stdout, "select not have data\n");
//mysql API query作用的行数
int num_rows = 0;
num_rows = mysql_affected_rows(conn);
}
}
//mysql API 获得结果集行数
unsigned long num = 0;
num = mysql_num_rows(res);
fprintf(stdout, "number of res:%d\n", num);
//mysql API 循环读出数据
MYSQL_ROW row;
unsigned int num_fields;
unsigned int i = 0;
//mysql API 获取字段数
num_fields = mysql_num_fields(res);
//mysql API 获取每行
while((row = mysql_fetch_row(res))){
unsigned long *lengths;
//mysql API 获取个各字段数据长度
lengths = mysql_fetch_lengths(res);
for(i = 0; i < num_fields; i++){
fprintf(stdout, "[%d , %s]\n", (int) lengths[i], row[i] ? row[i]: "NULL");
//fprintf(stdout, "[%.*s]\n", (int) lengths[i],row[i] ? row[i]: "NULL");
}
}
//mysql API销毁
RES:
mysql_free_result(res);
END:
mysql_close(conn);
return 0;
}
=========================================================
gcc mysql.c -o exe -I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient
./exe
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h> //函数调用头文件
#include <mysql/my_global.h> //全局函数的声明以及标准IO的头文件
int main()
{
MYSQL *conn;
//打印mysqlclient 版本号
printf("MYSQL client version:%s\n", mysql_get_client_info());
//mysql API初始化
conn = mysql_init(NULL);
//mysql API链接
if(!mysql_real_connect(conn, "localhost", "root", "123456", "lyytest", 0, NULL, 0)){
fprintf(stderr, "Failed to connect to database:Error:%s\n",mysql_error(conn));
goto END;
}
//mysql API 字符串转移 可防止恶意操作
char sql[1000] = "select * from lyyinfo";
char query[1000] = {0};
mysql_real_escape_string(conn, query, sql, strlen(sql));
//mysql API 查询链接是否正常并自动尝试在链接
while(mysql_ping(conn)){
// if(!mysql_real_connect(conn, "localhost", "root", "123456", "lyytest", 0, NULL, 0)){
// fprintf(stderr, "Failed to connect to database:Error:%s and try to connect again\n",mysql_error(conn));
sleep(1);
// }
}
//mysql API 查询
if(mysql_real_query(conn, query, (unsigned int)(strlen(query)))){
fprintf(stderr, "Failed to query database:Error:%s\n",mysql_error(conn));
goto END;
}
//mysql API 获得返回数据
MYSQL_RES *res;
res = mysql_store_result(conn);
if(res == NULL){
if(mysql_error(conn)){ //出错
fprintf(stderr, "Failed to get result for select, Error:%s\n",mysql_error(conn));
goto RES;
} //未返回数据
else if(mysql_field_count(conn) == 0){
unsigned int num_row = 0;
fprintf(stdout, "select not have data\n");
//mysql API query作用的行数
int num_rows = 0;
num_rows = mysql_affected_rows(conn);
}
}
//mysql API 获得结果集行数
unsigned long num = 0;
num = mysql_num_rows(res);
fprintf(stdout, "number of res:%d\n", num);
//mysql API 循环读出数据
MYSQL_ROW row;
unsigned int num_fields;
unsigned int i = 0;
//mysql API 获取字段数
num_fields = mysql_num_fields(res);
//mysql API 获取每行
while((row = mysql_fetch_row(res))){
unsigned long *lengths;
//mysql API 获取个各字段数据长度
lengths = mysql_fetch_lengths(res);
for(i = 0; i < num_fields; i++){
fprintf(stdout, "[%d , %s]\n", (int) lengths[i], row[i] ? row[i]: "NULL");
//fprintf(stdout, "[%.*s]\n", (int) lengths[i],row[i] ? row[i]: "NULL");
}
}
//mysql API销毁
RES:
mysql_free_result(res);
END:
mysql_close(conn);
return 0;
}
=========================================================
gcc mysql.c -o exe -I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient
./exe