vc++中使用ado方式操作access数据库
- 格式:doc
- 大小:119.00 KB
- 文档页数:20
ASP与网络数据库学习报告学院:专业:姓名:学号:成绩:二0一 0 年十一月用ADO对象访问Access数据库的方法ADO称为“Active数据对象”,是基于组件的数据库编程接口。
ADO实际是一种提供访问各种数据类型的连接机制,是一个与编程语言无关的COM(Component Object Model)组件系统。
ADO设计为一种极简单的格式,可以方便地连接任何符合ODBC标准的数据库。
在数据库的应用中,使用ADO编写的应用程序可以存取Internet任何地方的数据。
而我们通常用ADO的Connection对象、Command对象、Recordset对象来创建数据库。
而Acesss 数据库是目前应用比较广泛的桌面型数据库,广泛应用于各种小型管理信息系统中。
现在我们就来创建一个“网上留言”数据库以详细理解用ADO对象访问Access数据库的方法。
一、创建背景随着internet在中国的迅速发展,人们日常生活中越来越多地使用新技术来为自己的工作和学习服务。
在众多Internet关联功能中,有一项新的业务正成为所有用户所津津乐道的交流方式,这就是网上留言。
根据调查现在网民使用现状,网上留言板的使用百分比居前列。
二、数据库设计:1.首先创建一个Access 2003数据库为onlineword.mdb,分别设计以下两个表:reply表:字段名意义字段类型reid 回复者信息主键数字reply 回复者留言内容文字retime 留言时间日期leave表:字段名意义字段类型Id 留言者信息主键数字name 留言者姓名文字sex 性别文字ip ip地址数字os 操作系统文字qq qq号数字mail 邮箱地址数字addtime 添加时间日期body 留言内容文字ie ie类型文字2.建一个文件conn.asp用于链接打开当前目录下的onlineword.mdb数据库。
代码如下:<% set conn=server.createobject("ADODB.Connection")Conn.open"Provider=Mcorosoft.jet.oledb.4.0;Data Source="& server.MapPath("onlineword.mdb")%>3.用connection对象在数据库的reply表中添加一条记录(插入语句),建一个文件:insert.asp代码如下:<!--include file="conn.asp"--><% sql1="insert into reply( reid,reply,retime) values(‘1’,’谢;谢’,’10/11/12’)"conn.execute.sql1conn.closeset.conn=nothing%>4.用对象显示表中记录,在当前目录下,建一个show.asp文件,代码如下:<!--include file="conn.asp"--><% set rec=server.CreateObject("ADODB.RecordSet")Sql2="select * from reply where reid="& rs("id")' & " order by reid desc"rec.open sql2,conn,1,1%><table width="100%"><% do while not rec.eof %><tr><td><%=rs(reid) %></td></tr><tr><td><%=rs(reply) %></td></tr><tr><td><%=rs(retime) %></td></tr><% rec.movenextwendrec.closeset rec=nothing%></table>三、其他操作打开管理员回复信息数据库,开始调用其中内容。
VC中ADO操作Access数据库的实现
陈祖义;陶忠刚
【期刊名称】《计算机光盘软件与应用》
【年(卷),期】2010(000)010
【摘要】本文简要介绍了在VC6.0中使用ADO操作Access数据库的基本步骤和程序代码的实现,并列举出了关键的实例代码.
【总页数】1页(P150)
【作者】陈祖义;陶忠刚
【作者单位】空军第一航空学院,河南信阳,464000;空军第一航空学院,河南信阳,464000
【正文语种】中文
【中图分类】TP311.56
【相关文献】
1.在VC++中使用ADO方式对ACCESS数据库进行操作 [J], 范晶
2.在VC#.NET中利用实现树视图浏览编辑数据库 [J], 钟卫东
3.在VC中利用ADO技术操作数据库中的BLOB数据 [J], 王井阳;张晓明;秦敏;杨奎河;王晓红
4.在 VB6.0中通过宏操作实现文本文件到Access数据库的导入 [J], 吴恒亮
5.ADO数据库技术及微机线路保护通信规约在上位机开发中的VC++实现 [J], 刘小斌;杨年兴;马军弟;王艳玲;李梦达
因版权原因,仅展示原文概要,查看原文内容请购买。
ADO控件连接ACCESS数据库并进行修改添加
一、连接access及其工作列表
1、引用ADO控件和DataGRID显示控件
2、拖入两个控件和新建三个BT按钮,一个文本框数组(0-2)
因为在ACCESEE中,列的顺序是从0 开始。
第一个字段为0。
3、设置ADO控件:连接ACCESS。
难点!
选择4.0的这个驱动器后,选择相应的.xls的access数据库文件。
默认允许打开.mdb文件,选择全部类型文件就可以打开access文件啦。
Access的特殊性在于:设置扩展属性。
以上就将access连接好了,下面需要设置连接access 的那个工作表【Sheet1…….】,
4、连接工作列表注意[Sheet1$]
此时已经连接好access及其工作列表。
二、关联ADO控件和DataGrid显示控件
1、在DataGrid显示控件属性栏中,选择DateSource——Adodc1。
将数据和显示器连接。
2、显示access的字段和数据
3、为了能够进行数据库读写,需要设置显示控件的属性
三、关联显示控件和文本框代码如下:
Private Sub DataGrid1_Click()
For i = 0 To 2
Text1(i).Text = DataGrid1.Columns(i)
Next i
End Sub
四、设置命令按钮实现数据读写。
效果如下。
Visual C++环境下ADO控件访问数据库DBGrid数据表格控件以其短小精悍而深受大家的喜爱,但其如何在Visual C++中使用却很少有文章提及,本文将VC下使用DBGrid的具体步骤简要地介绍给大家。
一.前期准备为了实现DBGrid控件的自动捆绑,我们需要建立一个数据库和与之关联的数据源,本例中我们用Access建立数据库mydata.mdb,在数据库中新建一张表users,包含三个字段username,address,email,并输入多条记录。
在控制面板ODBC数据源中建立名称为test的系统DSN(注意是系统DNS非用户DNS),并将其指向mydata.mdb二.创建工程新建一个基于对话框的MFC AppWizard (exe)工程,取名为GridTest,并在AppWizard的第2步中确认已经提供ActiveX控件支持。
三.插入控件我们需要插入Microsoft RemoteData Control与DBGrid Control两个控件,方法如下:1)选择菜单->Project->Add to Project->Components and Controls Gallery2)在部件选择对话框中进入Registered ActiveX Controls3)选择Microsoft RemoteData Control ,单击Insert按钮,确认后对类进行配置(可以按默认),我们不做任何修改单击OK按钮,插入完成。
以同样的步骤,插入DBGrid Control控件。
4)回到VC工作区,我们在ResourceView中选择GridTest对话框模板(即ID号为IDD_GRIDTEST_DIALOG的对话框模板)此时我们发现在Controls工具条中已经新增了两个按钮,分别表示刚才插入的两个控件。
5)现在我们在模板中画出这两个控件,如图所示:四.更改控件属性鼠标右键单击RemoteData Control控件,在右键菜单中选择Properties,弹出属性对话框,在Control选项卡中选择数据源test,在SQL中输入SQL语句例如:select * from users如下图所示:用同样的方法我们打开DBGrid控件的属性对话框。
在VC++中使用ADO访问Access数据库摘要ADO具有易于使用、速度快、内存支出少和磁盘痕迹小的有点。
并且提供了轻量高性能的接口。
ADO(ActiveEx Data Object)是Microsoft数据库应用程序开发接口,是建立在OLE DB之上的高层数据访问技术。
即使我们对OLE DB 和COM不了解,也能轻松使用ADO,因为它非常的简单易用,甚至比以前的ODBC API、DAO都要容易使用,并不适灵活性。
同时它也提供了多语言访问技术包括Visual C++,Visual Basic和VBA等。
使用ADO编程一般有以下几个步骤组成:(1)连接到一个数据源;(2)打开指定的数据集;(3)执行所需的查询;(4)把数据检索到一个能够在C++代码中很容易访问的对象中;(5)提供检测错误的一般方法。
2.ADO对象的详细介绍如下表:使用Command对象查询数据库并返回 Recordset 对象中的记录,以便执行大量操作或处理数据库结构。
可以使用Command对象的集合、方法、属性进行下列操作:∙使用CommandText属性定义命令(例如,SQL 语句)的可执行文本。
∙通过Parameter对象和Parameters集合定义参数化查询或存储过程参数。
∙可使用Execute方法执行命令并在适当的时候返回Recordset对象。
∙执行前应使用CommandType属性指定命令类型以优化性能。
∙使用Prepared属性决定提供者是否在执行前保存准备好(或编译好)的命令版本。
∙使用CommandTimeout属性设置提供者等待命令执行的秒数。
∙通过设置ActiveConnection属性使打开的连接与Command 对象关联。
∙设置Name属性将Command标识为与Connection对象关联的方法。
∙将Command对象传送给Recordset的Source属性以便获取数据。
注意如果不想使用Command对象执行查询,请将查询字符串传送给Connection对象的Execute方法或Recordset对象的Open方法。
使用ADO操作Access数据库ADO对象1、Access内嵌的VBA是用ADO技术开发数据库应用的主要工具,ADO是目前Microsoft通用的数据访问技术;2、ADO对象模型包括:Connection、Recordset、Record、Command、Parameter、Field、Property、Stream、Error九个对象;3、主要的ADO对象介绍:1)Connection对象:ADO对象模型中的最高级对象,用来实现应用程序与数据源的连接;2)Command对象:主要在VBA中使用SQL语句访问、查询和修改数据库中的数据,实现Recordset对象无法实现的操作(数据表级别的操作),可以使用DoCmd代替;3)Recordset对象:ADO最为常用的、重要的对象,可以访问表和查询对象,返回的记录储存在Recorderset对象中,主要执行的操作:①查询数据表中的数据;②在数据表中添加数据;③更新数据表中的数据;④删除数据表中的特定数据;在Access中引用ADO对象1、Access引用ADO的步骤:①声明、初始化Connection对象;②创建Recordset对象,编程完成各种操作;③关闭ADO对象;2、声明、初始化Connection对象'声明Connection对象:一般使用cn做为变量的命名前缀;Dim coName As ADODB.Connection'初始化Connection对象,连接当前数据库;Set cnName = CurrentProject.Connection3、声明和打开Recordset对象1)声明、初始化Recordset对象Dim rsName As ADODB.Recoresetset rsName = new ADODB.Recordset2)打开一个Recordset对象使用Recordset的Open方法可以打开数据表、查询对象、或直接引用SQL查询语句4、关闭Recordset和Connection对象rsName.ClosecnName.CloseSet rsName = NothingSet cnName = Nothing通过Recordset对象引用记录字段1、引用字段的方法有2种:直接在记录集对象中引用字段名称;使用记录集对象的Fields(n)属性引用;Code = rsName!字段名'引用该字段的第一条记录Code = rsName.Field(n)'引用该字段的第n条记录,n从0开始,可以用循环输出需要量的记录2、如果记录集字段包含空格、或者是一个保留字,则引用时必须将该字段用 [ ] 括起来;通过Recordset对象浏览记录1.Recordset记录集对象提供了4种方法浏览记录2、BOF、EOF属性分别记录指针是否在文件开始、文件末尾;如果记录集指针指向某记录时,BOF和EOF都为false;'添加一个窗体部件的按钮事件:浏览下一条记录Priavte Sub ComomndNext_Click()rsDemo.MoveNextIf rsDemo。
VC通过 ADO 访问数据库方法择优Visual C++ 是一个编程语言,它可以通过 ADO(ActiveX 数据对象)来访问数据库。
ADO 是微软 Windows 上的一个内置数据库工具,它可以帮助开发者轻易地访问关系型数据库。
ADO 通过提供一套 COM(组件对象模型)接口,让开发者能够连接并操作不同类型的数据库,包括 Microsoft Access、Oracle 和 SQL Server 等。
以下是 VC 通过 ADO 访问数据库的方法择优描述。
1. 使用 ODBC 连接字符串ODBC(开放式数据库连接)是一个开放式标准,通过它,应用程序可以访问多个数据库,这些数据库可能来自于不同的供应商。
使用 ODBC 连接字符串可以通过 ADO 访问数据库。
它的优点是可以访问不同类型的数据库,但缺点是连接字符串比较麻烦,并且性能较差。
2. 使用 DSN 连接DSN(数据源名称)是一个名称,它通常与一个特定的数据库链接相关联。
使用 DSN 可以通过 ADO 访问数据库。
它的主要优点是连接字符串比较简单,但缺点是不能访问所有类型的数据库,并且性能稍差。
3. 使用 Jet 数据库引擎Jet 数据库引擎是一个文件级数据库,可以与ADO 一起使用,用于访问 Microsoft Access 数据库。
它的主要优点是可以访问Microsoft Access,不需要安装其他数据库软件,但缺点是不能访问其他类型的数据库,并且性能较差。
4. 使用 SQL Server OLE 数据提供程序SQL Server OLE 数据提供程序是一个为 SQL Server 设计的ADO 数据提供程序,它可以通过 ADO 访问 SQL Server 数据库。
它的主要优点是可以访问 SQL Server 数据库,但缺点是不能访问其他类型的数据库,并且需要安装 SQL Server 客户端软件(如 SQL Native Client)。
VC++中使用ADO方式操作ACCESS数据库ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,即使你对OLE DB,COM不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBC API、DAO、RDO都要容易使用,并不失灵活性。
本文详细地介绍在Visual C++开发环境下如何使用ADO来进行数据库应用程序开发,并给出示例代码。
为了使读者朋友都能测试本例提供的代码,我们采用Access数据库,您可以直接在我们提供的示例代码中找到这个test.mdb。
程序编译运行后的效果如图一所示:图一、ADO操作ACESS数据库的界面效果图一、实现方法万事开头难,任何一种新技术对于初学者来说最重要的还是"入门",掌握其要点。
让我们来看看ADO 数据库开发的基本流程吧!它的基本步骤如下:(1)初始化COM库,引入ADO库定义文件(2)用Connection对象连接数据库(3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。
(4)使用完毕后关闭连接释放对象。
下面我们将详细介绍上述步骤并给出相关代码。
1、COM库的初始化我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完成,请看如下代码:BOOL CADOTest1App::InitInstance(){AfxOleInit();......}2、用#import指令引入ADO类型库为了引入ADO类型库,需要在项目的stdafx.h文件中加入如下语句:#import "c:program filescommon filessystemadomsado15.dll"no_namespace rename("EOF","adoEOF")这一语句有何作用呢?其最终作用同我们已经十分熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。
vc++中使用ado方式操作access数据库ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,即使你对OLE DB,COM不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBC API、DAO、RDO都要容易使用,并不失灵活性。
本文详细地介绍在Visual C++开发环境下如何使用ADO来进行数据库应用程序开发,并给出示例代码。
为了使读者朋友都能测试本例提供的代码,我们采用Access数据库,您可以直接在我们提供的示例代码中找到这个test.mdb。
程序编译运行后的效果如图一所示图一、ADO操作ACESS数据库的界面效果图一、实现方法万事开头难,任何一种新技术对于初学者来说最重要的还是"入门",掌握其要点。
让我们来看看ADO数据库开发的基本流程吧!它的基本步骤如下:(1)初始化COM库,引入ADO库定义文件(2)用Connection对象连接数据库(3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。
(4)使用完毕后关闭连接释放对象。
下面我们将详细介绍上述步骤并给出相关代码。
1、COM库的初始化我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完成,请看如下代码:BOOL CADOTest1App::InitInstance(){AfxOleInit();......}2、用#import指令引入ADO类型库为了引入ADO类型库,需要在项目的stdafx.h文件中加入如下语句:#import "c:program filescommon filessystemadomsado15.dll"no_namespace rename("EOF","adoEOF")这一语句有何作用呢?其最终作用同我们已经十分熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。
需要读者朋友注意的是:您的开发环境中msado15.dll不一定在这个目录下,请按实际情况修改;在编译的时候可能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告:msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned。
3、创建Connection对象并连接数据库为了首先我们需要添加一个指向Connection对象的指针_ConnectionPtr m_pConnection,下面的代码演示了如何创建Connection对象实例及如何连接数据库并进行异常捕捉:BOOL CADOTest1Dlg::OnInitDialog(){CDialog::OnInitDialog();HRESULT hr;try{hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象if(SUCCEEDED(hr)){hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",adModeUnknown);///连接数据库//上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,//需要改为:Provider=Microsoft.Jet.OLEDB.3.51;}}catch(_com_error e)///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!rn错误信息:%s",e.ErrorMessage());AfxMessageBox(errormessage);///显示错误信息}在这段代码中我们是通过Connection对象的Open方法来进行连接数据库的,下面是该方法的原型:HRESULT Connection15::Open ( _bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options );上述函数中参数ConnectionString为连接字串;参数UserID是用户名;参数Password是登陆密码;参数Options是连接选项,用于指定Connection对象对数据的更新许可权,一般情况下Options可以是如下几个常量:adModeUnknown:缺省。
当前的许可权未设置adModeRead:只读adModeWrite:只写adModeReadWrite:可以读写adModeShareDenyRead:阻止其它Connection对象以读权限打开连接adModeShareDenyWrite:阻止其它Connection对象以写权限打开连接adModeShareExclusive:阻止其它Connection对象以读写权限打开连接adModeShareDenyNone:阻止其它Connection对象以任何权限打开连接我们给出一些常用的连接方式供大家参考:(1)通过JET数据库引擎对ACCESS2000数据库的连接:m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb","","",adModeUnknown);(2)通过DSN数据源对任何支持ODBC的数据库进行连接:m_pConnection->Open("Data Source=adotest;UID=sa;PWD=;","","",adModeUnknown);(3)不通过DSN对SQL SERVER数据库进行连接:m_pConnection->Open("driver={SQL Server};Server=127.0.0.1;DATABASE=vckbase;UID=sa;PWD=139","","",adModeUnknown);其中Server是SQL服务器的名称,DATABASE是库的名称。
Connection对象除Open()方法外还有许多方法,我们先介绍Connection对象中两个有用的属性ConnectionTimeOut与State。
ConnectionTimeOut用来设置连接的超时时间,需要在Open之前调用,例如:m_pConnection->ConnectionTimeout = 5;///设置超时时间为5秒m_pConnection->Open("Data Source=adotest;","","",adModeUnknown);State属性指明当前Connection对象的状态,0表示关闭,1表示已经打开,我们可以通过读取这个属性来作相应的处理,例如:if(m_pConnection->State)m_pConnection->Close(); ///如果已经打开了连接则关闭它4、执行SQL命令并取得结果记录集为了取得结果记录集,我们定义一个指向Recordset对象的指针:_RecordsetPtr m_pRecordset;并为其创建Recordset对象的实例: m_pRecordset.CreateInstance("ADODB.Recordset"),SQL命令的执行可以采用多种形式,下面我们一一进行阐述。
(1)利用Connection对象的Execute方法执行SQL命令Execute()方法的原型如下所示:_RecordsetPtr Connection15::Execute ( _bstr_t CommandText, VARIANT * RecordsAffected, long Options )其中CommandText是命令字串,通常是SQL命令。
参数RecordsAffected是操作完成后所影响的行数, 参数Options表示CommandText中内容的类型,Options可以取如下值之一:adCmdText表明CommandText是文本命令;adCmdTable表明CommandText是一个表名;adCmdProc表明CommandText是一个存储过程;adCmdUnknown表明CommandText内容未知。
Execute()函数执行完后返回一个指向记录集的指针,下面我们给出具体代码并作说明:_variant_t RecordsAffected;///执行SQL命令:CREATE TABLE创建表格users,users包含四个字段:整形ID,字符串username,整形old,日期型birthdaym_pConnection->Execute("CREATE TABLE users(ID INTEGER,usernameTEXT,old INTEGER,birthday DATETIME)",&RecordsAffected,adCmdText);///往表格里面添加记录m_pConnection->Execute("INSERT INTO users(ID,username,old,birthday)VALUES (1, 'Washington',25,'1970/1/1')",&RecordsAffected,adCmdText);///将所有记录old字段的值加一m_pConnection->Execute("UPDATE users SET old = old+1",&RecordsAffected,adCmdText);///执行SQL统计命令得到包含记录条数的记录集m_pRecordset = m_pConnection->Execute("SELECT COUNT(*) FROMusers",&RecordsAffected,adCmdText);_variant_t vIndex = (long)0;_variant_t vCount = m_pRecordset->GetCollect(vIndex);///取得第一个字段的值放入vCount变量m_pRecordset->Close();///关闭记录集CString message;message.Format("共有%d条记录",vCount.lVal);AfxMessageBox(message);///显示当前记录条数(2)利用Command对象来执行SQL命令_CommandPtr m_pCommand;m_pCommand.CreateInstance("mand");_variant_t vNULL;vNULL.vt = VT_ERROR;vNULL.scode = DISP_E_PARAMNOTFOUND;///定义为无参数m_pCommand->ActiveConnection = m_pConnection;///非常关键的一句,将建立的连接赋值给它m_pCommand->CommandText = "SELECT * FROM users";///命令字串m_pRecordset = m_pCommand->Execute(&vNULL,&vNULL,adCmdText);//执行命令取得记录集在这段代码中我们只是用Command对象来执行了SELECT查询语句,Command对象在进行存储过程的调用中能真正体现它的作用。