mysql.c
来源:互联网 发布:卖家网行业数据分析 编辑:程序博客网 时间:2024/05/21 13:23
#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
- mysql.c
- C mysql
- C#MYSQL
- mysql c
- C mysql
- c mysql
- c连接MYSQL例子
- Mysql C api
- c连接mysql数据库
- mysql c 接口大全
- c#+mysql 软件解决方案
- mysql 与C#【转】
- mysql c preparestatement
- MySQL與C編程筆記
- C#ODBC连接MYSQL
- MySQL的c调用
- vc c mysql
- MYSQL C API
- 如何学习嵌入式
- 黑马程序员——生产者消费者问题之线程间通信
- Add accounting periods to your calendar
- TextView 单行显示长文本
- Struts2异常处理机制
- mysql.c
- go 二维数组
- HDU 4497 GCD and LCM 解题报告
- c++一些问题
- JSP空间网站上传后发生404解决思路
- HDU2191:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- hdu1016-Prime Ring Problem
- 教你解决android软键盘挡住输入框问题!
- Apache Flume - File通道