连接mysql代码
#include <stdlib.h>
#include <stdio.h>
#include <mysql.h>
int main() {
char *ip = "localhost";
char *username = "aa";
char *pwd = "1";
char *databaseName = "t_file";
// 数据库指针
MYSQL *conn_ptr;
conn_ptr = mysql_init(NULL);
if (!conn_ptr) {
printf("mysql_init failed\n");
return EXIT_FAILURE;
}
conn_ptr = mysql_real_connect(conn_ptr, ip, username, pwd, databaseName, 0, NULL, 0);
//aa 为用户名 1为密码 t_file为要连接的database
if (conn_ptr) {
printf("Connection success\n");
} else {
printf("Connection failed\n");
}
mysql_close(conn_ptr);
return EXIT_SUCCESS;
}
编译命令
gcc -g -I/usr/include/mysql/ test.c -L/usr/lib64/mysql/ -lmysqlclient -lz
参数说明:
-I(大写的i) 表示要连接的头文件目录,因为使用了<mysql.h> ;
-L表示要连接的库文件目录
-l(小写的L) 表示要连接的具体的库名称,在/usr/local/mysql/lib/ 下,有叫做libmysqlclient.so的库,指定具体的库的名字时,默认去掉头尾的lib和.so直接使用中间的mysqlclient
参考连接
C 连接MySQL
查询代码
#include <stdlib.h>
#include <stdio.h>
#include <mysql.h>
int main() {
char *ip = "localhost";
char *username = "aa";
char *pwd = "1";
char *databaseName = "t_file";
char *query_cmd = "select * from blog_user";
int res, i, j;
MYSQL_RES *res_ptr;
MYSQL_ROW sqlrow;
MYSQL *conn_ptr;
conn_ptr = mysql_init(NULL);
if (!conn_ptr) {
printf("mysql_init failed\n");
return EXIT_FAILURE;
}
conn_ptr = mysql_real_connect(conn_ptr, ip, username, pwd, databaseName, 0, NULL, 0);
//aa 为用户名 1为密码 t_file为要连接的database
if (conn_ptr) {
printf("Connection success\n");
res = mysql_query(conn_ptr, query_cmd); //查询语句
if(res){
printf("SELECT error: %s\n", mysql_error(conn_ptr));
}else{
res_ptr = mysql_store_result(conn_ptr);
if(res_ptr){
printf("%lu Rows\n", (unsigned long)mysql_num_rows(res_ptr));
j = mysql_num_fields(res_ptr);
while((sqlrow = mysql_fetch_row(res_ptr))){
for(i = 0; i<j;i++) printf("%s\t", sqlrow[i]);
printf("\n");
}
if(mysql_errno(conn_ptr)){
fprintf(stderr, "Retrive error: %s\n", mysql_error(conn_ptr));
}
}
}
mysql_free_result(res_ptr);
} else {
printf("Connection failed\n");
}
mysql_close(conn_ptr);
return EXIT_SUCCESS;
}
执行结果
当查询语句中有中文得时候,会打印???出来。解决办法如下两文章:
C语言接口查询Mysql数据库,中文显示?
C++函数mysql_use_result获取mysql数据库中的数据中文显示为“?”
解决方法:在查询语句前加入如下代码,有两种方式:
1)
if (!mysql_set_character_set(&conn, "utf8")){
printf("New client character set: %s\n", mysql_character_set_name(&conn));
}
printf("%s\n","设置字符格式为中文" );
2)
mysql_query(&conn, "SET NAMES utf8;");