windows下VC++6.0编写c++程序连接mysql示例

    windows下通过c++编码连接mysql数据库,需要做一些设置,因为我们需要连接mysql并执行相关操作,需要使用mysql提供的api,这api在mysql.h头文件中定义了,因此我们需要在项目中引入mysql.h文件,另外在执行调用的时候,libmysql.lib和libmysql.dll提供了函数调用,我们还需要引入libmysql.lib和libmysql.dll。

    这里需要强调的一点是,虽然我们需要连接mysql,但是本机是无需安装mysql的,原因有二:1、我们的程序连接的mysql服务是可以指定ip和端口的,也就是说这个ip和端口可以随便指定,可以是本地,也可以是远程的。2、即使本机安装了mysql,现在的主机都是64位的,因此一般选择64位的mysql安装,但是这里我们的程序编译只能是32位平台,而且我们引入的libmysql.lib还必须是32位环境的。

    上面说了本机不一定需要安装myql,但是一定要下载或者找到一个32位的mysql,解压到某一个目录,然后将lib目录下的libmysql.lib和libmysql.dll两个文件拷贝到项目路径下。

    1、我们需要设置项目的include files和library files。具体操作如下图所示:在VC++6.0环境下,选择Tools->Options->Directories,在Include files选项下,选择增加一个目录,指向mysql安装目录的include目录,如下所示:

    

    该目录下有mysql.h就是我们在项目中需要通过#include引入的头文件。不做这一个设置,编译会报错。

    2、接着,我们选择Library files,然后将mysql目录下的lib加入到下面的Directories中,如下所示:

    

    3、在Project->Settings->Link->Object/library modules:在这里增加libmysql.lib。如下所示:

    

    我这里是一个工作空间下有多个项目,所以第一步选择有些奇怪,mysql是这个示例的项目名称。

    值得一提的是,这一步不是必须的,因为在程序中,我们可以很方便的通过#pragma comment(lib,"libmysql.lib")增加这个配置。我这里就没有这么设置,而是在程序中通过#pragma comment(lib,"libmysql.lib")的方式设置的,这两种方式有一种即可,两种都设置了,也没有问题。

    4、我们一定需要一个32位的mysql安装包文件,可以选择清华的源下载,国内下载非常快速,不用特意去mysql官网下载,地址如下:https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/,我们选择一个合适的win32的zip包即可。解压,然后将lib目录下的libmysql.lib和libmysql.dll文件加入项目目录下。如下所示:

    

    说明一下:我们下载的mysql版本不一定要和mysql服务器的版本一致,只要相差不是太大即可,比如我的mysql服务器是mysql-5.7.11-win64,而我用来在项目中依赖的mysql安装包是mysql-5.7.27-win32版本。 

    接下来,我们就可以准备编码了,这里给出一个简单的代码,代码可以连接本机mysql数据库,然后查询test数据库下的xx_scores表的数据:

#include <iostream>
#include <mysql.h>
using namespace std;
#pragma comment(lib,"libmysql.lib")
MYSQL conn;
MYSQL_FIELD *fd;
MYSQL_ROW row;
MYSQL_RES *result;
char column[32][32];

bool ConnectDatabase();
bool QueryData();
void FreeDatabase();
int main(){
	ConnectDatabase();
	QueryData();
	FreeDatabase();
	return 0;
}

bool ConnectDatabase(){
	mysql_init(&conn);
	if(!(mysql_real_connect(&conn,"localhost","root","root","test",3306,NULL,0))){
		cout<<"mysql connected fail."<<endl;
		return false;
	}else{
		cout<<"mysql connected successfully."<<endl;
		return true;
	}
}

bool QueryData(){
	mysql_query(&conn,"set names gbk");
	int res = mysql_query(&conn,"select * from xx_scores");
	if(!res){
		result = mysql_store_result(&conn);
		if(result){
			int i,j;
			cout<<"number of result: "<<(unsigned long)mysql_num_rows(result)<<endl;
			for(i=0;fd=mysql_fetch_field(result);i++){
				strcpy(column[i],fd->name);
			}
			j = mysql_num_fields(result);
			for(i=0;i<j;i++){
				cout<<column[i]<<"\t";
			}
			cout<<endl;
            while(row=mysql_fetch_row(result)){
				for(int i=0;i<j;i++){
					cout<<row[i]<<"\t";
				}
				cout<<endl;
			}

		}
	}
	return false;
}

void FreeDatabase(){
	mysql_free_result(result);
	mysql_close(&conn);
	cout<<"mysql connection & result release ok."<<endl;
}

     运行程序,控制台打印信息如下所示:

    

    这样,我们的示例就完成了,其中一定要注意libmysql.lib以及libmysql.dll文件的版本,必须是32位的。如果是64位的版本,编译不会报错,但是构建的时候会报错:invalid machine type。错误信息如下所示:

--------------------Configuration: mysql - Win32 Debug--------------------
Linking...
E:\MYSQL-5.7.11-WINX64\LIB\libmysql.lib : fatal error LNK1113: invalid machine type
Error executing link.exe.

mysql.exe - 1 error(s), 0 warning(s)

     最重要的一点:windows下通过c++程序连接mysql一定要注意引入libmysql.lib与libmysql.dll的版本一定要是32位平台的,本机可以安装mysql,也可以不用安装,但是一定要有一个win32的mysql安装包。

目录 第一章 1·带图标的菜单 2·显示倾斜文字 3·文字的颜色渐变 4·设置并叠加透明图片 5·颜色渐变进度条 6·透明窗体 第二章 7·调色程序 8·颜色下拉框 9·模拟拷贝进程 10·通用对话框 11·窗体分割 12·实现QQ程序的抽屉效果 13·以动画方式弹出,关闭窗口 14·半透明窗体 15·获得指定点颜色 16·判知图片大小 17·图片的伸缩显示 18·浏览大图 19·放大局部图形 20·屏幕抓图 21·裁剪位图 22·填充区域图象 23·列表项的提示条 24·浮动的鼠标提示 25·控制工具栏的按钮组 26·工具栏上设置下拉按钮 27·使窗体保持在最前 28·模仿windows任务拦 29·定义光标热区 30·拖放选中对象 第三章 31·调节系统音量 32·控制混音效果 33·播放WAV文件 34·再现windows的CD播放器 35·小解霸--VCD经典控制 36·播放rm文件 第四章 37·文字逐个出现模仿打字 38·嵌入式时钟 39·程序中嵌入日历 40·毫秒级的控制 41·读写系统时间 42·同步网络时间 第五章 43·编写屏保程序 44·屏蔽系统热键和隐藏任务拦 45·动态调整屏幕分辨率 46·获取系统硬件信息 47·编辑注册表信息 48·重启动和关闭计算机 49·获取windows版本号和运行模式 50·枚举可用字体 第六章 51·向导程序 52·系统托盘程序 53·隐藏程序不被关闭程序发现 54·枚举系统正在运行的程序 55·启动并控制其他exe程序 56·禁止运行程序多个实力 57·禁止程序右上角各按钮 58·多线程方式同时进行多项任务 59·线程优先级示例==赛马 60·利用剪贴板实现exe程序间的数据交换 61·通过内存映射实现exe程序间的数据交换 62·通过消息机制实现exe程序间的数据交换 第七章 63·获取驱动器序列号 64·获取磁盘空间数据 65·判别并定位到光驱(软驱) 66·嫡归法遍历磁盘目录 67·获得文件属性 68·删除不为空的目录 69·快速检索指定文件 70·拷贝,删除和移动文件 71·读写INI文件 72·读写大块资料(二进制) 73·文件变更通知 第八章 74·格式化数字 75·中文大写数字 76·存取图象字段 77·ADO控制access数据库 78·SQL语句中设置时段检索条件 79·SQL语句中设置字符串检索条件 80·SQL语句中设置多个字符串检索条件 81·SQL语句嵌套 82·代码控制链接ODBC 第九章 83·获取网卡地址 84·获得主机名和IP地址 85·端口扫描 86·判断网址是否有效 87·枚举局域网内计算机 88·连续批量Ping测试 89·设置IE的标题 90·收发电子邮件 91·FTP上传下载 92·网络聊天WINSOCK-TCP 93·广播信息WINSOCK-UDP 94·电话拨号上网 第十章 95·进制转换 96·随机选号 97·统计中英文字符数 第十一章 98·鼠标位置追踪 99·代码控制光标 100·模拟鼠标单双击 101·模拟键盘输入 102·限定鼠标区域 103·截获鼠标移开事件 104·截获键盘信息 第十二章 105·产生程序序列号 106·建立一个快捷方式 107·设置程序为自动被执行 108·注册与卸载OCX 109·限定程序的使用时限 110·在IE工具栏中加入快捷图标
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值