【c语言】连接mysql

这篇博客介绍了如何使用C语言连接MySQL数据库,包括连接代码和编译命令的详细说明。在遇到查询结果中文显示为问号的问题时,提供了相关文章链接以解决这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连接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;");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值