现在我们来介绍用ADO方式来连接access数据库
首先我们要导入#import "c:/program files/common files/system/ado/msado15.dll" /no_namespace /rename ("EOF", "adoEOF")其中路径名可以根据自己系统安装的ADO支持文件的路径来自行设定。
其次,在程序初始过程中需要初始化组件一般可以用AfxOleInit();这里我们要注意一下ADO的操 作过程中主要的功能组件有以下三个:
一是:_ConnectionPtr:智能指针,通常用于打开、关闭一个库连接或用它的Execute方法来执行一个不返回结果的命令语句打开一个库连接。先创建一个实例指针,再用Open打开一个库连接,它将返回一个IUnknown的自动化接口指针。代码如下所示:
_ConnectionPtrself_Connection;
// 初始化COM,创建ADO连接等操作
AfxOleInit();
self_Connection.CreateInstance(__uuidof(Connection));
//异常处理
try
{
// 打开本地Access库data文件夹中的test.mdb
self_Connection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data/test.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e->ErrorMessage());
return false;
}
//关闭一个库连接。如果连接状态有效,则用Close方法关闭它并赋于它空值。
if(self_Connection->State)
self_Connection->Close();
self_Connection= NULL;
二是:_RecordsetPtr智能指针,可以用来打开库内数据表,并可以对表内的记录、字段等进行各种操作。
——打开数据表。打开库内表名为infor的数据表,用sql语句代码如下:
_RecordsetPtrself_Recordset;
self_Recordset.CreateInstance(__uuidof(Recordset));
try
{
self_Recordset->Open("SELECT * FROM infor", // 查询infor表中所有字段
theApp.self_Connection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
操纵方法 ——读取表内数据。将表内数据全部读出如果没有遇到表结束标志adoEOF,则用GetCollect(字段名)或self_Recordset->Fields->GetItem(字段名)->Value方法,来获取当前记录指针所指的字段值,然后再用MoveNext()方法移动到下一条记录位置。代码如下所示:
_variant_t var;
CString strChinese,strEnglish
try
{
if(!self_Recordset->BOF)
self_Recordset->MoveFirst();
else
{
AfxMessageBox("表内数据为空");
return;
}
// 读入库中各字段并加入列表框中
while(!self_Recordset->adoEOF)
{
var = self_Recordset->GetCollect("chinese");
if(var.vt != VT_NULL)
strChinese = (LPCSTR)_bstr_t(var);
var = self_Recordset->GetCollect("english");
if(var.vt != VT_NULL)
strEnglish = (LPCSTR)_bstr_t(var);
AfxMessageBox(strEnglish+"的中文意思是: "+strChinese);
self_Recordset->MoveNext();
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
} ——插入记录。可以先用AddNew()方法新增一个空记录,再用PutCollect(字段名,值)输入每个字段的值,最后再Update()更新到库中数据既可。其中变量m_Name和m_Age分别为姓名及年龄编辑框的成员变量名。代码所下所示:
try
{
// 写入各字段值
self_Recordset->AddNew();
self_Recordset->PutCollect("Name", _variant_t(m_Name));
self_Recordset->PutCollect("Age", atol(m_Age));
self_Recordset->Update();
AfxMessageBox("插入成功!");
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
操纵方法——移动记录指针。移动记录指针可以通过MoveFirst()方法移动到第一条记录、MoveLast()方法移动到最后一条记录、MovePrevious()方法移动到当前记录的前一条记录、MoveNext()方法移动到当前记录的下一条记录。但我们有时经常需要随意移动记录指针到任意记录位置时,可以使用Move(记录号)方法来实现,注意: Move()方法是相对于当前记录来移动指针位置的,正值向后移动、负值向前移动,如:Move(1),当前记录是1时,它将从记录1开始往后再移动1条记录位置。代码如下所示:
try
{
// 先将指针移向第一条记录,然后就可以相对第一条记录来随意移动记录指针
self_Recordset->MoveFirst();
self_Recordset->Move(1);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
操纵方法——修改记录中字段值。可以将记录指针移动到要修改记录的位置处,直接用PutCollect(字段名,值)将新值写入并Update()更新数据库既可。可以用上面方法移动记录指针,修改字段值代码如下所示:
try
{
// 假设对第二条记录进行修改
self_Recordset->MoveFirst();
self_Recordset->Move(1); // 从0开始
self_Recordset->PutCollect("chinese", _variant_t(m_Chinese));
self_Recordset->PutCollect("english", atol(m_English));
self_Recordset->Update();
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
操纵方法——删除记录。删除记录和上面修改记录的操作类似,先将记录指针移动到要修改记录的位置,直接用Delete()方法删除它并用Update()来更新数据库既可。代码如下所示:
try
{
// 假设删除第二条记录
self_Recordset->MoveFirst();
self_Recordset->Move(1); // 从0开始
self_Recordset->Delete(2); //
self_Recordset->Update();
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
} ——关闭记录集。直接用Close方法关闭记录集并赋于其空值。代码如下所示:
self_Recordset->Close();
self_Recordset = NULL;
三是:CommandPtr智能指针,可以使用_ConnectionPtr或_RecordsetPtr来执行任务,定义输出参数,执行存储过程或SQL语句。 先创建一个_CommandPtr实例指针,再将库连接和SQL语句做为参数,执行Execute()方法既可。代码如下所示:
_CommandPtrself_Command;
self_Command.CreateInstance(__uuidof(Command));
self_Command->ActiveConnection = self_Connection; // 将库连接赋于它
self_Command->CommandText = "SELECT * FROM infor"; // SQL语句
self_Recordset = self_Command->Execute(NULL, NULL,adCmdText); // 执行SQL语句,返回记录集
分享到:
相关推荐
并添加记录、使用ADO在数据库中遍历、修改和删除记录、使用ADO Data和DataGrid控件实现遍历、修改、删除、添加、使用ADO直接操作Access数据库、使用ADO向数据库添加BLOB数据(图像)、使用ADO从数据库中读出BLOB数据...
Access2000中文版高级编程 目录 第一部分 编程基础 1 第1章 宏与代码 3 1.1 何时使用代码代替宏 4 1.1.1 何时用宏 4 1.1.2 何时用代码 4 1.2 宏到代码的转换 5 1.2.1 使用DoCmd对象 5 1.2.2 与宏...
673.6.2 将数据库转换为Access 2000格式 683.6.3 将数据库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access数据库和表 724...
Access2000中文版高级编程 目录 第一部分 编程基础 1 第1章 宏与代码 3 1.1 何时使用代码代替宏 4 1.1.1 何时用宏 4 1.1.2 何时用代码 4 1.2 宏到代码的转换 5 1.2.1 使用DoCmd对象 5 1.2.2 与宏命令等价...
673.6.2 将数据库转换为Access 2000格式 683.6.3 将数据库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access数据库和表 724...
673.6.2 将数据库转换为Access 2000格式 683.6.3 将数据库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access数据库和表 724...
673.6.2 将数据库转换为Access 2000格式 683.6.3 将数据库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access数据库和表 724...
673.6.2 将数据库转换为Access 2000格式 683.6.3 将数据库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access数据库和表 724...
673.6.2 将数据库转换为Access 2000格式 683.6.3 将数据库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access数据库和表 724...
673.6.2 将数据库转换为Access 2000格式 683.6.3 将数据库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access数据库和表 724...
673.6.2 将数据库转换为Access 2000格式 683.6.3 将数据库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access数据库和表 724...
673.6.2 将数据库转换为Access 2000格式 683.6.3 将数据库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access数据库和表 724...
673.6.2 将数据库转换为Access 2000格式 683.6.3 将数据库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access数据库和表 724...
673.6.2 将数据库转换为Access 2000格式 683.6.3 将数据库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access数据库和表 724...
673.6.2 将数据库转换为Access 2000格式 683.6.3 将数据库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access数据库和表 724...
673.6.2 将数据库转换为Access 2000格式 683.6.3 将数据库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access数据库和表 724...
数据库连接 ODBC 是一种底层的访问技术,因此,ODBC API 可以是客户应用程序能从底层设置和控制数据库,完成一些高级数据库...DAO是Microsoft一种用来访问Jet引擎的方法,主要用来访问Access数据库,使用起来比较简单。
本书要求读者对 ASP.NET 和 C# 有一些基本的认识,如果对操纵数据库没有任何经验也没有关系,作者将指导每个过程,包括将 ASP.NET 页面与数据库连接,研究各种读取、处理和更新数据的方法。接下来研究所有涉及侧重于...
本系统使用Visual Basic编程语言,采用SQL Server数据库,主要使用Visual Basic中的Ado Data控件来对数据库进行各种操作。使用Ado Data控件操作简单,可以使用最少的代码创建数据库应用程序。而对数据库的操作,既...
本系统使用Visual Basic编程语言,采用Access作为数据库,主要使用Visual Basic中的Ado Data控件来对数据库进行各种操作。使用Ado Data控件操作简单,可以使用最少的代码创建数据库应用程序。而对数据库的操作,既...