C/C++连接MYSQL(巨详)

6 篇文章 0 订阅

首先,C/C++连接MYSQL数据库的思路都是将MYSQL官方提供的工具加入编译器的库或路径(至少是Dev-C++和VS是这样)

那这些工具在哪儿呢?

它们在你MYSQL安装目录的MYSQL Server文件夹下的"include"文件夹和"lib"文件夹中(MYSQL Server路径:C:\Program Files\MySQL\MySQL Server 8.0)

那要怎么把它们加入编译器呢?作者下面就以Dev-C++的添加方法作为样本做一个详细介绍!

环境配置:

首先打开Dev-C++,点击其窗口栏中的"Tools"(工具),再点击其中的"Compiler options"(编译器选项)

然后在打开窗口的第二个大框中添加字符串" -lmysql",像这样

然后点击上面的"Directories"(索引)选项,之后点击里边的"Libraries"(库)选项,然后下面有这样一个添加的小按钮,点击进入文件浏览器,在搜索框中输入

“C:\Program Files\MySQL\MySQL Server 8.0\lib”,点击确定,之后点击它下面的"add"(添加)按钮

然后跳转到隔壁"C Includes",以同样的方法添加一个路径

“C:\Program Files\MySQL\MySQL Server 8.0\include”

之后要不嫌麻烦可以顺带把隔壁的"C++ Includes"一道配了,这样用C++就也能连接MYSQL了

之后点击最下面的"OK"按钮,这样编译器就算是配好了;然后呢,还有最后一步操作:

将之前添加路径时用到的"lib"文件夹下的“libmysql.dll”文件复制粘贴到系统根目录(“C:\Windows”)下,这样整个环境配置工作就算是完整落幕了(鼓掌

 连接实现:

C/C++连接MYSQL思路:

一、初始化数据库连接句柄

二、连接数据库

三、设置字符集,防止发生乱码

四、设置操作命令

五、设置结果集接收返回结果(并输出)

六、关闭结果集、断开连接

上才艺:

#include <stdio.h>
#include <mysql.h>
int main() {
	char host[10] = "localhost";//端口号 
    char user[10] = "root";//用户 
    char password[10] = "********";//密码 
    char database[10] = "mysql";//数据库 
	
	MYSQL* conn;//设置数据库连接句柄 
    conn = mysql_init(NULL);//初始化连接句柄 
	/*MYSQL conn;
	mysql_init(&conn);*/ 
    if(!conn){
    	puts("初始化失败!");
		return EXIT_FAILURE;
		//exit(1); 
	}
	
	conn = mysql_real_connect(conn,host,user,password,database,0,NULL,0);//连接数据库 
	if(conn)  puts("数据库连接成功!");//判断数据库是否连接成功 
	else{
		printf("数据库连接失败,错误:%s",mysql_error(conn));
		mysql_close(conn);
		return EXIT_FAILURE;
		//exit(1);
	} 
	
	//字符编码,解决乱码
	if(mysql_set_character_set(conn,"GBK"))    puts("字符集设置错误!");
	else    puts("字符集设置成功!"); 
	
	char query[20] = "select * from course";
	if(mysql_query(conn,query))    printf("查询失败,错误:%s\n",mysql_error(conn));
	else    puts("查询成功!");
	
	MYSQL_RES* res;
	res = mysql_use_result(conn);//获取结果
	//res = mysql_store_result(conn);
	MYSQL_ROW row;//设置行结果容器 
	while(row = mysql_fetch_row(res)){//获取行结果 
		for(int t = 0;t < mysql_num_fields(res);t++)//将行结果分列输出 
			printf("%s\t", row[t]);
		printf("\n");
	}
	
	mysql_free_result(res);//释放结果集 
	mysql_close(conn);//关闭数据库连接 
	return 0; 
}

C++版代码:

#include <iostream>
#include <mysql.h>
using namespace std;
int main(int argc, char** argv) {
	char host[10] = "localhost";
    char user[10] = "root";
    char password[10] = "********";
    char database[10] = "mysql";
	
	MYSQL mysql;
	if(!mysql_init(&mysql)){
		cout<<"初始化失败!"<<endl;
		return EXIT_FAILURE;
		//exit(1);
	}
	
	if (mysql_real_connect(&mysql,host,user,password,database,0,NULL,0))
		cout<<"数据库连接成功"<<endl;
	else{ 
		cout<<"数据库连接失败,错误:"<<mysql_error(&mysql)<<endl;
		mysql_close(&mysql);
		return EXIT_FAILURE;
		//exit(1); 
	} 
	
	if(mysql_set_character_set(&mysql,"GBK"))	cout<<"字符集设置错误!"<<endl; 
	else	cout<<"字符集设置成功!"<<endl; 
	
	char query[20] = "select * from c";
	if(mysql_query(&mysql,query))	 cout<<"查询失败,错误:"<<mysql_error(&mysql)<<endl;
	else	cout<<"查询成功!"<<endl;
	
	MYSQL_RES* res;
	res = mysql_store_result(&mysql);
	//res = mysql_use_result(&mysql);
    //如果前边使用的是连接句柄对象,则此处只能使用"mysql_store_result"函数
	MYSQL_ROW row;
	for(int i = 0;i < mysql_num_rows(res);i++){
		row = mysql_fetch_row(res);
		for(int j = 0;j < mysql_num_fields(res);j++)
			cout<<row[j]<<"\t";
		cout<<endl;
	} 
	
	mysql_free_result(res);
	mysql_close(&mysql);
	return 0;
}

VS环境配置:

  • 11
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
使用C语言编写程序并使用MySQL Connector/C连接MySQL时,出现LNK2019错误通常有两个可能的原因。第一种可能是缺少相应的库文件,第二种可能是项目平台和所引用的第三方SDK不一致,即32位对应引用了64位,或者64位对应引用了32位。 为解决缺少库文件的问题,您需要确保在项目设置中正确地配置了MySQL Connector/C的库文件路径。这可以通过在项目属性中的“链接器”部分设置库文件的目录或直接将库文件添加到项目中来实现。请确保您已经正确地安装了MySQL Connector/C,并根据其文档提供的指导进行设置。 如果出现平台不一致的问题,您需要检查您的项目和所引用的第三方SDK的平台是否匹配。如果您的项目是32位的,您应该使用相应的32位版本的MySQL Connector/C。同样地,如果您的项目是64位的,您应该使用相应的64位版本的MySQL Connector/C。 确保您按照正确的方式链接MySQL Connector/C,并且项目和所引用的SDK平台一致,应该能够解决LNK2019错误。如果问题仍然存在,请检查您的代码以及其他可能导致错误的因素,例如函数声明或调用的错误。 希望这些信息对您有所帮助!<span class="em">1</span> #### 引用[.reference_title] - *1* [C++使用MySQL-Connector/C++连接MySQL出现LNK2019错误的解决方法](https://download.csdn.net/download/weixin_38710127/13782499)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值