(From http://www.j2megame.org/wupei/blog.php/myblog/vc/2007/07/21/vc-ado-access)
VC下利用ADO直接访问Access数据库步骤不需要用户建立ODBC数据源)
1.包含相关动态链接库
-
//在StdAfx.h中,最后部分添加(注意:一定要在最后部分,否则会编译出错)
-
#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2.连接的创建与初始化
-
//相关成员变量
-
_ConnectionPtr m_conn;
-
_RecordsetPtr m_res;
-
-
//成员函数块(一般写在CDocment类构造函数即可)
-
try
-
{
-
CoInitialize(NULL);
-
m_conn.CreateInstance(_uuidof(Connection));
-
CString strFileName;
-
strFileName = "MYBASE.mdb"; //添加相应你的数据库的文件名,编辑状态应放在源文件目录下
-
m_conn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFileName,
-
"","",adConnectUnspecified); //用户名,密码
-
m_res.CreateInstance(_uuidof(Recordset));
-
}
-
catch(_com_error e) //异常检测
-
{
-
AfxMessageBox("数据库连接错误!",MB_ICONEXCLAMATION);
-
exit(0); //错误,程序退出
-
}
3.数据库相关操作(操作方法很多,这里只提供一种简易操作)
假设数据库表设计如下:
表名: MYTABLE
表设计:
自动编号类型 ID
字符串类型 NAME
BOOL类型 SEX
(1)增
-
_variant_t m_resa; //可声明为成员变量
-
-
CString strMyName = "MyName";
-
CString strSex = "true";
-
-
CString sql;
-
sql = "insert into MYTABLE (NAME,SEX) ";
-
sql += "values ('" + strMyName +"',";
-
sql += " " + strSex + " ";
-
sql += ")";
-
-
try
-
{
-
m_conn->Execute((_bstr_t)sql,&m_resa,adCmdText); //执行"增"操作
-
}
-
catch(_com_error e)
-
{
-
AfxMessageBox("数据库增错误",MB_ICONEXCLAMATION);
-
exit(0); //错误,程序退出
-
}
(2)删
-
_variant_t m_resa; //可声明为成员变量
-
-
CString strID = "1"; //所要删除记录的ID号
-
CString sql;
-
-
sql = "delete from MYTABLE "; //注意需要有空格
-
sql += "where ID = " + strID; //其他语法详查SQL语句
-
-
try
-
{
-
m_conn->Execute((_bstr_t)sql,&m_resa,adCmdText); //执行"增"操作
-
}
-
catch(_com_error e)
-
{
-
AfxMessageBox("数据库删错误",MB_ICONEXCLAMATION);
-
exit(0); //错误,程序退出
-
}
(3)改
-
_variant_t m_resa; //可声明为成员变量
-
-
CString sql;
-
CString strMyName = "MyName";
-
CString strSex = "true";
-
CString strID = "1"; //所要更新的记录ID
-
-
sql = "update MYTABLE set ";
-
sql += "NAME = '" + strMyName +"', ";
-
sql += "SEX = " + strSex + " ";
-
sql += "where id = " + strID;
-
-
try
-
{
-
m_conn->Execute((_bstr_t)sql,&m_resa,adCmdText); //执行"增"操作
-
}
-
catch(_com_error e)
-
{
-
AfxMessageBox("数据库删错误",MB_ICONEXCLAMATION);
-
exit(0); //错误,程序退出
-
}
(4)查
-
_variant_t m_resa; //可声明为成员变量
-
CString sql;
-
sql = "Select * from MYTABLE"; //查询语句改变,相应下面的语句也要改变
-
-
//#include <afxtempl.h>//需加入头文件
-
//CArray<CMyClass,CMyClass&> m_Array; //可用容器保存你取得的数据
-
-
try
-
{
-
m_res = m_conn->Execute((_bstr_t)sql,&m_resa,adCmdText);
-
}
-
catch(_com_error e)
-
{
-
AfxMessageBox("数据库查错误",MB_ICONEXCLAMATION);
-
exit(0);
-
}
-
-
//m_Array.RemoveAll(); //清空容器
-
-
try
-
{
-
while(!m_res->adoEOF) //循环遍历记录
-
{
-
_variant_t vID, vName, vSex;
-
-
vID = m_res->GetCollect("ID");
-
vName = m_res->GetCollect("NAME");
-
vSex = m_res->GetCollect("SEX");
-
-
///////////////////////////////////////////////
-
int nID;
-
nID = (long)vID.lVal;
-
///////////////////////////////////////////////
-
CString strName;
-
if(VT_NULL != vName.vt ) //如果数据不为空
-
{
-
strName = (LPCTSTR)vName.bstrVal;
-
}
-
///////////////////////////////////////////////
-
bool bSex;
-
if(VT_NULL != vSex.vt )
-
{
-
bSex = (bool)vSex.boolVal;
-
}
-
////////////////////////////////////////////////
-
-
//CMyClass one(nID, strName, bSex); //创建数据对象
-
//m_Array.Add(one); //加入数组
-
-
m_res->MoveNext(); //移动到下一条记录
-
}
-
}
-
catch(_com_error e)
-
{
-
AfxMessageBox("数据库查错误",MB_ICONEXCLAMATION);
-
exit(0);
-
}
4.关闭数据库
-
try
-
{
-
if(m_res != NULL)
-
{
-
m_res->Close();//关闭记录集
-
}
-
if(m_conn != NULL)
-
{
-
m_conn->Close(); //关闭连接
-
}
-
}
-
catch(_com_error e)
-
{
-
AfxMessageBox("数据库关闭错误",MB_ICONEXCLAMATION);
-
exit(0);
-
}
5.总结
数据库操作多种多样,可以查查相关资料
这里只介绍了简单的一种操作,面向对象封装一下,直接调用即可
分享到:
相关推荐
利用ADO连接Access数据库
VC++6.0 通过ADO方式直接连接ACCESS数据库,对ACCESS数据库进行操作。
该资源是本人在VC下用ADO读写Access数据库期间收集的关于ADO数据库的资料,加有VC的列表框。并包含一些源代码,希望能对大家有所帮助!
ADO访问ACCESS数据库-数据库应用-VC_C++,建立了很多包装类
讲述了如何使用vc来操作access数据库,很全面 讲述了如何使用vc来操作access数据库,很全面 讲述了如何使用vc来操作access数据库,很全面 讲述了如何使用vc来操作access数据库,很全面
VC利用ADO库访问ACCESS数据库,新增、修改和更新.保存BMP文件到OLE字段。
本文通过实例演示如何在VC++中使用ADO进行ACCESS数据库编程,并对涉及到的几个概念进行详细解释。 本文不对ADO和ACCESS的基本概念进行详细解释,主要包括以下内容: 第一部分 ADO和ADOX到底是什么,二者的作用和区别...
VC6通过ADO操作Access数据库(AdoRWAccess),参见: http://download.csdn.net/detail/jojolovejj/3048825 可是那边没有代码下载,折腾N久终于找到了
这是一个利用ado访问数据库的程序,对初学者有一定的借鉴作用-ado access to the database using the procedures for beginners a certain reference
Hook编程。如何安装钩子过程,如何编写全局钩子,动态连接库里的全局变量数据共享问题分析。ADO数据库编程。在VB中利用ADO控件和ADO对象访问数据库,在VC中利用ADO技术访问数据库。
vc 通过Ado访问access数据库的一个简单例子
VC 通过ado访问access数据库的例子是我在网上看完后自己做的一个简单示例.通过这两个例子我基本了解了VC访问数据库的一些机制,希望对你有所帮助!
VC通过ADO访问ACCESS数据库案例,改一改就可以用在自己的代码上了。
vc ado 访问access数据库实例,本人收集的为了方便大家使用,就传上来了 更多信息请查看 www.iubang.com
里面总结了Vc 中Ado创建access数据库,VC小技巧,VC+ADO+Access2000数据库文件密码的设置和修改,在对话框中动态显示位图等等
开发环境:VS2010C++ 用ADO方式读取数据库,代码清晰易懂,适合新手学习 数据库文件为ACCESS 需要用数据源配置的
里面包含了4个VC下使用ADO访问ACCESS数据库的工程,全部都是自己学习ADO时编写的,包含了打开数据库、创建表单、字段、增删改查等一般化的内容。 里面的注释比较详细,希望对新手有用。 事实上,这样的方法对访问...
主要是使用了ADO这个类,类中的各个函数在程序中都使用了。和访问SQL SERVER数据库差不多。
ADO访问ACCESS数据库的VC6.0的完整例子