在VC++中如何用ODBC实现与数据库的链接

在VC++中如何用ODBC实现与数据库的链接,第1张

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

这是我上学期做数据库课程设计时参考一文章。

如果要把信息以表格形式表示,建议看看CRecordView类的使用

----------------------------------------

你是说注册数据库源吗? 有个函数可以实现自动注册数据库源 在我空间里有我当时写的一篇文章,你可以去看看

----------------------------------------

至于你说的,你用的是sql数据库根本都没关系的

我给你的那篇文章,里面讲的是用基本的sql语句访问数据库,无论什么系统都行,当时我课程设计用的也是sql2000,但是还是从里面照搬了许多代码

建议使用ado来连接,使用odbc比较繁琐的,如下是我精心总结的使用ado连接数据库方法

*******************************************

**********首先是连接Access数据库***********

*******************************************

@@@@@@@以下在VC6.0环境中都能实现@@@@@@@@@@@

================ADO方法:==================

|||||针对Access2003:---->参照实例Ado6666.zip文件

//首先要在文件的头部引入一个动态链接库:

#import "c:\program files\common files\system\ado\msado15.dll" \

no_namespace \

rename ("EOF", "adoEOF") \

rename ("BOF","adoBOF")

//连接指针,实例方法一

_ConnectionPtr pConn(__uuidof(Connection))

//连接指针,实例方法二

_ConnectionPtr pConnpConn.CreateInstance(__uuidof(Connection))

//对于ADO的连接,要指定一个Provider和一个数据源

//ADO连接Access的Provider是Microsoft.Jet.OLEDB.4.0而数据源就是一个Access文件

Provider= Microsoft.Jet.OLEDB.4.0

Data Source = ×××.mdb

//调用Open函数打开连接

//Open的第一个参数是连接字符串(ConnectionString),即由Provider和Data Source组成的一个字符串

//第二个和第三个参数是数据源的用户名和密码,如果没有给它们指定,则为空字符串

pConn->Open("","","",adConnectUnspecified)

//打开记录集两种方式

//方式一: 该方式打开一个SQL语句执行的内容,且能够对记录集进行查询、修改、添加和删除

pRset->Open("SELECT * FROM 学生",(_variant_t)((IDispatch*)pConn),adOpenDynamic,adLockOptimistic,adCmdText)

//方式二: 该方式打开一个SQL语句执行的内容,与“方式一”所不同的是,我们只能对其查询

pRset = pConn->Execute("SELECT * FROM 学生",NULL,adCmdText)

//另加说明:还有其他打开方式,如利用_CommandPtr指针对象,也是可以有同样的 *** 作的

//记录集和数据库的练级的关闭

pRset->Close() //关闭

pRset.Release() //释放

pRset = NULL //设其值为NULL,防止到处乱指

pConn->Close() //关闭

pConn.Release() //释放

pConn = NULL //设其值为NULL,防止到处乱指

-------------------------------------------------------------------------------------------

|||||针对Access2007:---->参照实例Ado7777.zip文件

我们知道Access2007文件的后缀名是.accdb,经过测试我们知道,使用Microsoft.Jet.OLEDB.4.0 Provider

已经不能打开数据库,微软给我们提供了一个支持Access2007数据库连接的Provider:Microsoft.ACE.OLEDB.12.0

只是这样还不够,还需要一个数据引擎,我从网上下了一个:AccessDatabaseEngine.exe,安装之后就可以用了。

其他 *** 作和连接Access2003大同小异,没有什么区别。

-------------------------------------------------------------------------------------------

|||||针对SQL Server2005:---->参照实例DBLinkToSS2005.zip文件

对于ADO技术的使用,只要做好连接字符串,其他 *** 作基本相同

对于连接SQL Server2005,主要还是ConnectionString的问题,它的ConnectionString是:

Provider=MSDASQL.1Password=lanchePersist Security Info=TrueUser ID=saData Source=mysqlserver2005dsInitial Catalog=master

这段代码比较长,不容易记住,但是没有必要,有一种简便的方法,可以准确无误地做好连接字符串的准备

方法如下:

1,向对话框中添加两个ActiveX控件:Microsoft ADO Data Control 6.0(SP6)和Microsoft DataGrid Control 6.0(SP6)

要注意的是,在"Insert Active Control"对话框中还有一个与Microsoft DataGrid Control 6.0类似的控件:DBGrid Control,

千万别加错了!

2,打开Microsoft ADO Data Control 6.0(SP6)控件的属性对话框,在标签控件中选择Control标签,点击"Build",将会d出一个数据

连接属性对话框,这里有很多种连接,当然我不可能把所有的情况都说一遍,现在我只说说现在我的做法:

【提供程序】选择Microsoft OLEDB DB Provider for ODBC Drivers【连接】选择一个数据源,如我利用

SQL Server Native Client 10.0驱动程序建立了一个名为"mysqlserver2005ds"数据源

3,如果测试连接成功后,即可以得到一个ConnectionString了

-------------------------------------------------------------------------------------------

|||||针对Oracle 11g:---->参照实例DBLinkToSS2005.zip文件

连接Oracle11g的方法和连接SQL Server2005的方法是一样的,在这里我只给出我做的实例的ConnectionString

Provider=MSDASQL.1Password=lanchePersist Security Info=TrueUser ID=systemData Source=Oracle ODBC for Visual C++

###########################################################################################

备注:

1,其他数据库连接,比如到SQL Server2008(SQL Server2000不必说,因为它已经退出历史舞台),还有Oracle10g,它应该和Oracle11g的连接

方法一样,没什么变化。还有一类数据库,我不想讨论,比如MySQL,DB2等。

2,还有三种连接数据库技术:ODBC,OLE,DAO,这三种方法比较古老,ODBC只是在数据源方面还很有用,至于用它来做数据库开发,是不适宜的;

DAO是建立在OLE之上的一种技术,如今出现了ADO技术,虽说DAO技术在某些方面还是有一些优势,但还是被ADO给淘汰了,据我所知,DAO

已经被淘汰了,目前ADO是使用最广泛也是最便利的技术,所以综合这四种技术,在数据库开发中推荐使用ADO.故不再讨论其他连接技术了。

…………………………………………Summed on by Chengming………………………………………………

……………………………If you have any question,please contact me…………………………………

…………………My QQ number is 1204833748 and my e-mail is Tacky_Man@126.com…………………


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10874330.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存