VC++6.0连接MySQL的配置过程
VC使用mysql.h的接口头文件进行连接mysql数据库开发
摘要:前几天搞一个VC程序,目的是连接MYSQL服务器,做查询数据,等各种操作。我没有选择ADO,也没有使用ODBC这样的方式,貌似ODBC还需要配置服务端的ODBC设置,所以觉得很麻烦,不适合我追求完美的个性。于是找了MSYQL提供的官方API,不得不承认,他们的东西真的做的不错。但是,由于第一次使用,网上的参考资料又不完整,还不能解决我遇到的所有问题。不过,最终在我的各种奇思异想之下,还是解决了,现把完整的步骤和遇到的问题的解决办法给写出来,以求能帮助到遇到问题的朋友。共享精神嘛!大家好,才是真的好!呵呵
用C连接MySQL,在Win7下用VC++6.0连接MySQL数据库,可能发生的错误:
……\libmysql.lib : fatalerror LNK1113: invalid machine type。
发生这个错误的原因是,我在win7上安装的是64bit的mysql服务器(因为之前想在64bit的win7上安装64bit的程序会看起来好些;实际上64bit的win7系统上对32bit的应用程序兼容还可以的),而我编译32位的VC程序,连接的是64位的libmysql.lib库,所以会产生 “无效的机器类型(invalid machine type)”的错误提示。
对于这个“error LNK1113”错误的解决方案是:
下载32位的mysql的zip包,大概100多M的那个。解压出来,把lib目录按照,第5步定位lib。这样的话,我们的32位程序编译的时候,链接的就是32位的库,就不会出现上面的链接错误了。也不必换到xp系统上去操作了。
环境说明:
操作系统:windows 7
开发工具:VC++6.0
开发的exe:32位程序
数据库服务器:64位的mysql-5.5.20-winx64.msi(33M),运行在win7上,即localhost,
引用的数据库lib:32位的mysql-5.5.20-win32.zip(146M)的lib文件夹。
步骤如下:
1. 到官网www.mysql.com下载MySQL安装包:
mysql-essential-5.1.52-win32.msi
当然你也可以下载安装mysql*.zip,这个要配置my.ini配置文件,会比较麻烦,生手不一定会在短时间内配置成功。
2. 安装mysql,在安装过程中如(如果是.msi安装),一定要选上C Include Files / Lib Files,这样在安装后才能在mysql的安装文件夹中找到include和lib文件夹,这些文件夹将在下面的操作用会用到。
3. 把[MySQL安装目录]\MySQL Server 5.5\bin下的libmySQL.dll复制并拷贝到C:\WINDOWS\system32下。(这一步我没有做,一样可以编译通过,我是在WIN7下验证的,不知在XP或是win-NT中是否需要这一步)。
4. 在VC++6.0建立一个工程,打开:工具(tools)->选项(options),在弹出的“选项”对话框中,点击“目录(directories)”标签,可以看到一个:“显示目录为”的下拉框,选择“include files”选项,在其中加入:[MySQL安装目录]\MySQLServer 5.5\include\ 这个目录,如图1。这样在编译时就可以使用 #include <mysql.h> 找到mysql.h文件。
图1
当然,你也可以不进行第4步,直接把 “[MySQL安装目录]\MySQLServer 5.0\include\” 文件夹拷贝到当前工程目录。然后在程序中使用 #include"include\mysql.h" 包含头文件。
5. 设置步骤4后,只是保证编译通过,但是连接出错。连接时需要用到lib文件,lib文件一般是函数定义编译后的库文件,必须使程序链接时找到这个文件。打开:工具->选项菜单,找到“目录”标签,可以看到有一个:“显示目录为”的下拉框,选择Library files选项,在其中加入: 【32位的mysql zip解压文件夹】\MySQLServer 5.5\lib\,如图2。
图2
然后在:工程->设置,找到link选项卡,在对象/库模块下面的输入框中的库列表的最后面加入:libmysql.lib。如图3。
图3
6. 编译链接,运行即可。
运行之前还有关键的一点:必须把32位 mysql的lib目录下的libmysql.dll 这个动态链接库,复制到当前工程的debug目录。也就是说,这个动态库必须和运行的exe程序放在一起。假如你要这个exe程序放到别处运行,那么你也必须一起复制libmysql.dll 。
7. 下面是一个可以运行的小例子,只要建立win32 consoleAplication工程,建一个C文件,把代码复制到C文件中,只要按上述配置就能运行。