最近一直想在VC中利用ADO连接数据库,在网上找了很多资料,但因资料繁杂,版本很多,且连接方法有很多种,所以看着不方便,尝试了很多次,又仔细看了一些ADO的教程,终于成功了,现在看不起来也不难.下面就是一个例子.   源代码下载

新建一个对话框应用程序,建一个ACESS数据库命名为Demo.mdb,数据表名为Demo Table,数据表中记录的字段值分别为Name,Age..将此数据库放入刚才建的应用程序文件夹下.

1.在stdafx.h中加入
#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF","adoEOF")

2.在OnInitDialog()中初始化COM.
AfxOleInit();

3.创建Connection对象并连接数据库
首先声明一个_ConnectionPtr接口对象
_ConnectionPtr m_pConnection;

下面创建Connection对象实例及如何连接数据库并进行异常捕捉。
m_pConnection.CreateInstance(__uuidof(Connection));
try                
{
// 打开本地Access库Demo.mdb
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!");
return FALSE;
}     
//至此数据库连接已完成,下面可以继续深入一下对对数据库的操作.

4.利用_RecordsetPtr智能指针,来打开库内数据表,并对表内的记录、字段等进行各种操作。
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));

try
{
m_pRecordset->Open("SELECT * FROM DemoTable",                // 查询DemoTable表中所有字段
       m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
       adOpenDynamic,
       adLockOptimistic,
       adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}     

5.读取表内数据。将表内数据读出并显示在编辑框中.
首先在对话框上添加两个EDIT控件并添加变量m_name,m_age;添加代码如下:



_variant_t var; //_variant_t是一种通用数据类型,里面可以放不同类型的数据。
var = m_pRecordset->GetCollect("Name");
    if(var.vt != VT_NULL)
     m_name = (LPCSTR)_bstr_t(var);  
var = m_pRecordset->GetCollect("Age");
    if(var.vt != VT_NULL)
     m_age = (LPCSTR)_bstr_t(var);
UpdateData(false);

注意:(LPCSTR)_bstr_t(var) 把_variant_t里的通用数据当作字符串读出来,_bstr_t类重载了LPCSTR,返回了刚才那个字符串的指针。其实LPCSTR 就是char*, 然后CString重载了运算符=,会把LPCSTR类型的字符串自动转换为CString。 除第一步外,其余代码均添加在OnInitDialog()中.

运行,界面上即可显示数据表中的第一条记录.这只是一个入门的程序,若有兴趣可以继续完善.

更多推荐

VC用ADO连接ACCESS数据库入门