拳皇2002最难玩的是谁:VC 6.0中用ODBC连接mysql数据库

来源:百度文库 编辑:偶看新闻 时间:2024/05/05 05:03:09

VC++6.0中用ODBC连接mysql数据库

2008-06-27 10:34:03 来源:中国自学编程网 作者:佚名

下图是程序的最终效果,包含了数据的显示,添加,修改,删除这几项数据库操作的常用功能。


我的调试环境是xp,mysql版本是mysql4.0.23

1.安装Mysql的ODBC驱动
从http://www.mysql.com上下载驱动程序
地址:http://dev.mysql.com/downloads/connector/odbc/3.51.html#win32
我是下载的Windows ZIP/Setup.EXE
下载到本机之后从zip包中解压出setup.exe文件,双击安装,没什么可说的,完全的傻瓜式安装

2.设置ODBC数据源
配置MySQL的ODBC数据源有两种方法
第一种:手工设置
比较麻烦,但是确是比较安全的办法。
步骤如下:
开始 -> 控制面板 -> 管理工具 -> 数据源 (ODBC),双击数据源(ODBC)之后会出来如下的界面

点击右上角的"添加"按钮之后会出现如下的界面

可以看到,我们刚才安装的驱动程序已经出现在列表中了,选中它,然后单击完成,此时会出来下面的界面

按上图所示,填写好各项连接所需要的信息点击“Test”可以进行测试,如果出现sucessful字样就表示成功了
  我解释一下填写的信息:
Data Source Name:缩写就是DSN,中文翻译过来就是数据源名称,就是给数据源取个名,为了安全还是取英文名吧,省得出现意外。
Description:描述,可填可不填,我比较懒,就没填,想填也行,就是描述一下这个数据源是哪家的,干啥用的等等,随便吧
Server:服务器,不能省,我填的是localhost,如果你有远程主机,不妨试试填上远程主机的IP地址,我没试过,不清楚
User:用户名,我本地数据库用的是root,你们如果有别的就根据自己的情况填吧
Password:密码,我没设置密码,有则填之,没有就留空
Database:数据库,这是一个listbox,可以自己填,也可以从下拉列表中选,如果你前面的Server,User,Password都正确的话,下拉列表中会出来可选的数据库,这个就是我们要连接的数据库资源。

解释完毕,点了OK之后,我们就算设置完成了。

第二种:动态设置
这种办法是指在程序执行时才添加数据源,SQLConfigDataSource是所用的方法,查msdn可以查到它的用法
第一个参数一般设置成NULL就可以了,
第二个参数我用的是ODBC_ADD_DSN,表示是新增数据源
第三个参数是驱动的名称,在数据源(ODBC)中抄过来就OK了
第四个参数是连接字符串,多个参数用\0分隔开,DSN就是数据源名称,UID是用户名,PWD是密码,SERVER是主机名,DATABASE是数据库名称,最后用两个\0结束。
只要在程序中加上这一行,当程序执行到它时,就会在数据源中加上你所设置的数据源,并且可以在控制面板 -> 管理工具 -> 数据源(ODBC)中查到。如图二所示,里面的odbctest和odbctestqqqq,前者就是动态创建的,后者是最初手工创建的。

SQLConfigDataSource(NULL,ODBC_ADD_DSN,"MySQL ODBC 3.51 Driver","DSN=odbctest\0 UID=root\0 PWD=\0 SERVER=localhost\0 DATABASE=odbc\0\0");
3.编写连接程序
我用的是VC6.0,VC这东西好是好,就是封装得太多了,像我等这样初来乍到之人一时半会是狗咬乌龟--找不到下口的地方
下面我就按我的方式来说说,肯定有高手有更高明的办法,不妨评论一二,也好让我等开开眼界。

(1).创建一个基于对话框的工程
在VC中点击菜单中 File -> New,在Projects的下拉菜单中选择MFC AppWizard (exe);
在右上角的输入框中填写一个工程的名字,我取名叫ODBCTest;
选择一个存放目录,我的是存在E:\c\ODBCTest;
点击OK进入下一步,选择基于对话框,然后点finish完成设置。

(2).包含头文件
切换到file view,在header files中找到stdafx.h,这是MFC第一个要包含的头文件,我们在里面加上如下两行,将odbc及数据库操作所需的头文件引入到工程中。没这两个头文件编译时会出错。
......

#include
#include "afxdb.h"// 用的时候把引号换成尖括号,编辑器自动给转成了非源码形式,郁闷//{{AFX_INSERT_LOCATION}}