VC中ADO开发Access数据库详解 (vc 使用ado开发access数据库)

在计算机的应用开发中,数据库扮演着非常重要的角色。许多程序都需要与数据库进行交互,进行数据的存取、更新等操作。在WINDOWS开发中,常见的关系型数据库包括Microsoft SQL Server、MySQL、Oracle等,而ACCESS也是其中的一种数据库。ACCESS具有易于使用、集成性强、支持多用户等特点,因此在WINDOWS应用程序开发中得到广泛应用。

本文将简要介绍VC中ADO开发Access数据库的相关内容。其中,VC指Visual C++。ADO即ActiveX Data Objects,是Microsoft开发的数据库访问技术。Access则是一种关系型数据库,拥有微软Office套件搭配使用的操作便捷性和通用性。

1. VC中ADO连接Access数据库

在VC中,连接数据库使用的是ADO。ADO提供了一套简单的、基于COM的数据访问接口,是一种高效的跨平台、跨数据库的数据访问方法。使用ADO连接Access数据库需要先添加 Microsoft ActiveX Data Objects Library(在VC的菜单栏中选择“项目”-“添加引用”)。

连接Access数据库步骤如下:

1)编写连接字符串

ConnectString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + m_strPath + “;Jet OLEDB:Database Password=” + m_strPassword;

其中,Provider为数据库提供程序,”Microsoft.Jet.OLEDB.4.0″为Access2023及以下版本的提供程序,”Microsoft.ACE.OLEDB.12.0″为Access2023及以上版本的提供程序;

Data Source为数据库源,即Access数据库文件路径;

Jet OLEDB:Database Password为数据库密码,如果没有密码,则可以省略。

2)创建ADO连接对象和记录集对象

CADOConnection m_conn;//连接对象

CADORecordset m_rs;//记录集对象

3)打开数据库连接

BOOL bOpen = m_conn.Open(ConnectString, NULL, NULL, adConnectUnspecified);

其中,之一个参数为连接字符串;

第二个参数为连接的用户名,这里不需要填写;

第三个参数为连接的密码,这里也不需要填写;

第四个参数为连接选项,常常指定为adConnectUnspecified。

4)打开记录集

BOOL b = m_rs.Open(strSQL, &m_conn, adOpenStatic, adLockReadOnly, adCmdText);

其中,之一个参数为SQL查询语句;

第二个参数为连接对象;

第三个参数为ADO打开记录集方式,包括:

adOpenForwardOnly:只向前滚动,不可修改,既低效又不太灵活。

adOpenKeyset:只向前滚动,可修改,可以查看引用的数据表的所有数据,但查看数据表的速度会变慢。

adOpenDynamic:动态全部滚动,可修改,可以查看数据表的所有数据,包括新增加和删除的记录,但查看数据表的速度是最慢的,使用时要注意。

adOpenStatic:静态全部滚动,不可修改,速度很快,特别是当记录集被缓存后,速度是最快的。这种方式只适用于只读的数据结果集。

第四个参数为查询类型,常常指定为adCmdText。

连接完毕后,便可以进行对数据库的操作了,包括执行SQL语句、查询记录、增删改记录等。下面介绍几个常用的操作。

2. 执行SQL语句

在VC中,可以使用ADO连接Access数据库执行SQL语句,包括查询、新增、修改和删除等,具体方法如下:

CString strSQL =

“SELECT * FROM student”;

m_rs.Open(strSQL,&m_conn,&adOpenStatic,&adLockReadOnly,&adCmdText);

if (!m_rs.IsEOF())

{

m_rs.MoveFirst(); //将记录集指向之一行。

while(!m_rs.IsEOF())

{

//执行具体的操作

}

}

字符串strSQL定义了要执行的SQL语句,可以是任何符合SQL语法的命令;

数据库连接对象m_conn和记录集对象m_rs通过Open函数打开连接和记录集;

查询结果记录集通过Fetch函数获取到本地,记录集指针随着每次访问结果集而移动。

3. 查询记录

查询记录常常与执行SQL语句结合使用,调用ADO连接对象的Execute函数得到Recordset对象,再通过MoveNext函数进行单条数据访问,具体方法如下:

CString strQuery = “SELECT * FROM student WHERE ID = 1”;

m_rs.Open(strQuery,&m_conn,&adOpenStatic,&adLockReadOnly,&adCmdText);

while( !m_rs.EOF )

{

for (int i = 0; i GetCount(); i++) //遍历当前行的字段

{

CString fieldName = m_rs.Fields->Item[i]->Name;

CString value = ((CString)(m_rs.Fields->Item[i]->Value));

}

m_rs.MoveNext();

}

首先定义SQL查询语句strQuery,可以包括条件等,最终的查询结果可以是很多行数据;

通过执行Open函数指定的SQL语句打开某个记录集,其中Open的第二个参数为连接对象m_conn,最后一个参数为查询类型adCmdText;

通过循环访问m_rs,查询SQL语句的结果;

通过辅以Recordset对象中的字段对象,读取每一行记录中的字段,进行解析。

4. 增加记录

增加记录可通过调用数据库连接对象m_conn及其相关方法完成,具体方法如下:

CString strSQLInsert = “INSERT INTO student ” \

“(Name, Age, Grade) ” \

“VALUES (‘Peter’, 20, 100)”;

BOOL bInsert = m_conn.Execute((_bstr_t)strSQLInsert, NULL, adCmdText);

其中,SQL语句定义了要操作的表和具体的增加内容,VALUES后为要插入的具体数据;

使用m_conn对象的Execute函数执行SQL语句,之一个参数为执行的SQL语句,第二个参数为记录集对象,第三个参数为查询类型。

5. 删除记录

同样可以使用ADO连接对象m_conn及其相关方法完成删除记录的操作,具体方法如下:

CString strSQLDelete = “DELETE FROM student WHERE Name = ‘Peter'”;

BOOL bDelete = m_conn.Execute((_bstr_t)strSQLDelete, NULL, adCmdText);

其中,SQL语句定义了要操作的表以及具体删除的条件;

使用m_conn对象的Execute函数执行SQL语句,之一个参数为执行的SQL语句,第二个参数为记录集对象,第三个参数为查询类型。

6. 修改记录

注:涉及知识点较多,建议了解基本的SQL语法和语句结构。修改记录可以使用Ado连接对象m_conn及其相关方法完成,具体方法如下:

CString strSQLUpdate = “UPDATE student SET Grade=80 WHERE Name = ‘Peter'”;

BOOL bUpdate = m_conn.Execute((_bstr_t)strSQLUpdate, NULL, adCmdText);

其中,SQL语句定义了要操作的表以及具体增加的条件;

使用m_conn对象的Execute函数执行SQL语句,之一个参数为执行的SQL语句,第二个参数为记录集对象,第三个参数为查询类型。

本文主要介绍了VC中ADO连接Access数据库的一些常用方法,包括连接数据库、执行SQL语句、查询记录、增删改数据等。VC中ADO连接Access是进行WINDOWS应用程序开发中非常常见的操作之一,根据实际需要可进行灵活运用,同时也需要把握SQL基础知识和语句的结构,才能更好地进行开发实践。

相关问题拓展阅读:

关于VC++ 6.0 用ADO控件访问Access的问题

strConnection 字段有问题,数据库不存在,应该是路径问题

ADO还是需要进行错误捕捉的,即便遇上了用户操作错误,也不至于导致程序强制退出。

养成捕捉错误的良好习惯!用户一旦发生了操作错误,捕捉后,可以给用户更正的机会,程序未必一定要强行终止!

try {

hr=pCnn->Open(strConnection,””,””,/*adModeUnknown*/16);

}

catch (_com_error e) {

MessageBox(e.Description(), _T(“操作错误,请更正”));

}

楼主检查一下,数据库(DataBaseSS.mdb)在当前目录中吗?加上绝对路径试试

看(Data Source = C:\\XX\\DataBaseSS.mdb)!

同意楼上两位的见解,肯定是Data Source=DataBaseSS.mdb中要连接的数据库DataBaseSS.mdb不在工程的当前目录下,可以将数据库文件DataBaseSS.mdb拷贝到工程目录下,即该工程的存放.cpp和.h文件的文件夹下,或者在Data Source=DataBaseSS.mdb中将.mdb完整路径添加完整。然后重新编译调试。

虽然接触的时间不长但觉得是指针上的错误,程序出现了野指针或无效的游标,要不用try catch试试

(MFC)在VC6.0下面利用ADO读写access数据库能删除不能插入修改

尽量不要用关键字,比如password,username等,把它变成mypassword或其它。

vc 使用ado开发access数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vc 使用ado开发access数据库,VC中ADO开发Access数据库详解,关于VC++ 6.0 用ADO控件访问Access的问题,(MFC)在VC6.0下面利用ADO读写access数据库能删除不能插入修改的信息别忘了在本站进行查找喔。


数据运维技术 » VC中ADO开发Access数据库详解 (vc 使用ado开发access数据库)