64位 Windows 下用VS2005 MFC或者C++ 连接MySQL的正确方法

先说连接MFC 或者C++ Mysql的步骤:

连接数据库过程中可能会报以下两个错误,

error C2146: syntax error : missing ';' before identifier 'fd'   error LNK2019: unresolved external symbol _mysql_init 解决方法后面说。

在调用之前,当然首先要配置环境,打开Tools-Options-Projects and Solutions-VC++ Directories . 选择Win32 的设置(这个一般是默认的),然后选择include files, 加入 MySQL 的头文件目录,一般是%MySQL_SERVER_HOME%/include (MySQL_SERVER_HOME替换成你的Mysql server安装目录), 同理在library files 中加入 %MySQL_SERVER_HOME%/ilib目录

      在使用mysql函数之前,先#include <WinSock2.h>, 否则会报error C2146: syntax error : missing ';' before identifier 'fd' ,因为Mysql内部是通过TCP/IP协议实现客户端和服务端连接的, 其次#include <mysql.h> 然后,如果没有在Project properties中添加依赖,则再加上这么一句#pragma comment(lib, "libmysql.lib") ,这样子就配置好了。

     然后这里有个小例子,供新手测试用:

	mysql_init (&mysql);
	if(!mysql_real_connect(&mysql, "127.0.0.1", "root", "123456", "test", 3306, NULL, 0)) 
	{
		AfxMessageBox("连接数据库失败");
		return;
	}
	mysql_query(&mysql,"DROP TABLE IF EXISTS TEST");
	mysql_query(&mysql, "CREATE TABLE IF NOT EXISTS TEST \
		(ID INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20))");
	mysql_query(&mysql, "INSERT INTO TEST(NAME) VALUES('Lucy')");
	mysql_query(&mysql, "INSERT INTO TEST(NAME) VALUES('Kevin')");
	mysql_query(&mysql, "SELECT * FROM TEST");
	MYSQL_RES *res = mysql_store_result(&mysql);
	MYSQL_ROW row;
	while(row = mysql_fetch_row(res))
	{
		for(int t=0; t<mysql_num_fields(res); t++)
		{
			AfxMessageBox(row[t]);
		}
	}

	mysql_free_result(res);
	mysql_close(&mysql);

这里只是一个代码片段,如果是在Win32 控制台程序中,则用printf输出结果。

这里再讲最后一个问题,就是error LNK2019: unresolved external symbol _mysql_init等错误,即调用函数出问题了,一般,头文件包含了,然后调用函数出问题了,基本上都是一个原因,就是lib文件有问题,在这里也是这个原因,Win32程序调用64为的libmysql.lib就会报错,因此,要包含32位的lib文件,这里提供32为lib,同时,建议将64位mysql的libmysql.lib更名,因为本人测试过程中发现,不将mysql自带的libmysql更名,则同样会默认包含mysql自带的libmysql.lib, 当然你也可以讲32位的libmysql.lib 改个名字,然后用#param comment就OK了。编译连接通过之后,运行还要讲32为的libmysql.dll放在程序目录或者System32 目录之下, 接下来的提供的是32位lib和dll文件下载连接 点击打开链接

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值