VC 连接ACCESS ado

VC 连接ACCESS ado
 1 void  CTestdbDlg::OnOK() 
 2 {
 3    // TODO: Add extra validation here
 4    //AfxOleInit();    
 5    CoInitialize(NULL);  //初始化
 6    //打开数据库
 7    _ConnectionPtr m_pConnection;
 8    try
 9    {
10        m_pConnection.CreateInstance("ADODB.Connection");
11        //    ASSERT(m_pConnection != NULL);
12        _bstr_t strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Persist Security Info=False";
13        m_pConnection->ConnectionTimeout=5//设置超时时间为5秒
14        m_pConnection->Open(strConnect,"","",adModeUnknown);
15    }

16    catch(_com_error e)
17    {
18        AfxMessageBox(e.ErrorMessage());
19    }

20    _RecordsetPtr m_pRecordset; //一个指向Recordset对象的指针
21    //查询 
22    CString    sql="select sno From [sn]  ";
23      try
24      
25            m_pRecordset.CreateInstance(__uuidof(Recordset));
26            m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
27            while(!m_pRecordset->GetadoEOF())
28            {
29                _variant_t var;
30                var=m_pRecordset->GetCollect("sno");
31                if(var.vt != VT_NULL)
32                {
33                     CString strValue =(LPCSTR)_bstr_t(var);
34                     MessageBox(strValue);
35                }

36                m_pRecordset->MoveNext();
37            }

38      }

39      catch(_com_error e)/**////捕捉异常
40      {
41        AfxMessageBox(e.ErrorMessage());
42        AfxMessageBox(e.Source());
43            AfxMessageBox(e.Description());   
44      }

45    //更新
46     _bstr_t    sql2="update [sn] set name='sss' where sno=3";
47    _variant_t RecordsAffected;
48    m_pConnection->Execute(sql2,&RecordsAffected,adCmdText);
49    m_pRecordset->Close();/**////关闭记录集
50    m_pConnection->Close();/**////关闭连接
51//    AfxOleTerm();
52    CoUninitialize();
53         
54}
在连接数据库之前要添加#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF","adoEOF")

路径根据本机设置修改  
rename("EOF","adoEOF")  //重新命名

你可能感兴趣的:(VC 连接ACCESS ado)