在计算机的应用开发中,数据库扮演着非常重要的角色。许多程序都需要与数据库进行交互,进行数据的存取、更新等操作。在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的问题
- (MFC)在VC6.0下面利用ADO读写access数据库能删除不能插入修改
关于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数据库能删除不能插入修改的信息别忘了在本站进行查找喔。