ADO连接ACCESS数据库
生活随笔
收集整理的這篇文章主要介紹了
ADO连接ACCESS数据库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用ADOX,需要引入ADOX的動態鏈接庫msadox.dll,首先在stdafx.h中加入如下語句:
#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF","adoEOF")
然后在程序初始化的時候需要初始化COM。在App::InitInstance()函數中加入
??? if(!AfxOleInit())
??? {
?????? AfxMessageBox("OLE初始化出錯!");
?????? return FALSE;
??? }
然后進行連接數據庫 // 定義ADO連接、命令、記錄集變量指針
_ConnectionPtr m_pConnection;
_variant_t RecordsAffected;
_RecordsetPtr m_pRecordset;
? try
{
? m_pConnection.CreateInstance(__uuidof(Connection)); //連接SQL SERVER
??//m_pConnection->Open("Driver=SQL Server;Database=test;Server=127.0.0.1;UID=sa;PWD=123;","","",adModeUnknown);
??//連接ACCESS2003
? m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/UserInfo.mdb; Jet OLEDB:DataBase password=123","","",adModeUnknown);
}
catch(_com_error e)
{
? CString errormessage;
? errormessage.Format("連接數據庫失敗!/r錯誤信息:%s",e.ErrorMessage());
? AfxMessageBox(errormessage);
? ExitProcess(0);
}
連接成功之后向數據庫執行查詢語句select ALL* from userinfo,在按鈕里添加如下代碼。
void CUserDlg::OnButtonAll()
{
// TODO: Add your control notification handler code here
m_list.DeleteAllItems();
try
{
? m_pRecordset.CreateInstance("ADODB.Recordset"); //為Recordset對象創建實例
? _bstr_t strCmd = "select ALL* from userinfo";?? //SQL語句
? m_pRecordset=m_pConnection->Execute(strCmd,&RecordsAffected,adCmdText);? //執行
?
}
catch(_com_error &e)
{
? AfxMessageBox(e.Description());
}
? //SQL語句執行成功之后,以下的代碼是獲取記錄返回的數據
_variant_t userid, username, u_groupid, u_tim, u_timed_tim, u_qq,
? u_email,u_realname,u_address,u_postcode,u_phone;
try
{
? while(!m_pRecordset->adoEOF)
? {
?? //獲取返回的記錄
?? userid=m_pRecordset->GetCollect("userid");
?? username=m_pRecordset->GetCollect("username");
?? u_groupid=m_pRecordset->GetCollect("u_groupid");
?? u_tim=m_pRecordset->GetCollect("u_tim");
?? u_timed_tim=m_pRecordset->GetCollect("u_timed_tim");
?? u_qq = m_pRecordset->GetCollect("u_qq");
?? u_email = m_pRecordset->GetCollect("u_email");
?? u_realname = m_pRecordset->GetCollect("u_realname");
?? u_address = m_pRecordset->GetCollect("u_address");
?? u_postcode = m_pRecordset->GetCollect("u_postcode");
?? u_phone = m_pRecordset->GetCollect("u_phone");
? //對返回的用戶信息記錄插入m_list?
?? if(userid.vt!=VT_NULL)
?? {
??? m_list.InsertItem(0,(LPCTSTR)(_bstr_t)userid);
?? }
?? if (username.vt!=VT_NULL)
?? {
??? m_list.SetItemText(0,1,(LPCTSTR)(_bstr_t)username);
?? }
?? if (u_groupid.vt!=VT_NULL)
?? {
??? m_list.SetItemText(0,2,(LPCTSTR)(_bstr_t)u_groupid);
?? }
?? if (u_timed_tim.vt!=VT_NULL)
?? {
??? m_list.SetItemText(0,3,(LPCTSTR)(_bstr_t)u_tim);
?? }
?? if (u_timed_tim.vt!=VT_NULL)
?? {
??? m_list.SetItemText(0,4,(LPCTSTR)(_bstr_t)u_timed_tim);
?? }
?? if (u_qq.vt!=VT_NULL)
?? {
???? m_list.SetItemText(0,5,(LPCTSTR)(_bstr_t)u_qq);
?? }
?? if (u_email.vt!=VT_NULL)
?? {
???? m_list.SetItemText(0,6,(LPCTSTR)(_bstr_t)u_email);
?? }
?? if (u_realname.vt!=VT_NULL)
?? {
???? m_list.SetItemText(0,7,(LPCTSTR)(_bstr_t)u_realname);
?? }
?? if (u_address.vt!=VT_NULL)
?? {
???? m_list.SetItemText(0,8,(LPCTSTR)(_bstr_t)u_address);
?? }
?? if (u_postcode.vt!=VT_NULL)
?? {
???? m_list.SetItemText(0,9,(LPCTSTR)(_bstr_t)u_postcode);
?? }
?? if (u_phone.vt!=VT_NULL)
?? {
???? m_list.SetItemText(0,10,(LPCTSTR)(_bstr_t)u_phone);
?? }
?? m_pRecordset->MoveNext();
? }
}
catch(_com_error &e)
{
? AfxMessageBox(e.Description());
}
m_pRecordset->Close();?? //關閉記錄對象
m_pRecordset=NULL;????
}
#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF","adoEOF")
然后在程序初始化的時候需要初始化COM。在App::InitInstance()函數中加入
??? if(!AfxOleInit())
??? {
?????? AfxMessageBox("OLE初始化出錯!");
?????? return FALSE;
??? }
然后進行連接數據庫 // 定義ADO連接、命令、記錄集變量指針
_ConnectionPtr m_pConnection;
_variant_t RecordsAffected;
_RecordsetPtr m_pRecordset;
? try
{
? m_pConnection.CreateInstance(__uuidof(Connection)); //連接SQL SERVER
??//m_pConnection->Open("Driver=SQL Server;Database=test;Server=127.0.0.1;UID=sa;PWD=123;","","",adModeUnknown);
??//連接ACCESS2003
? m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/UserInfo.mdb; Jet OLEDB:DataBase password=123","","",adModeUnknown);
}
catch(_com_error e)
{
? CString errormessage;
? errormessage.Format("連接數據庫失敗!/r錯誤信息:%s",e.ErrorMessage());
? AfxMessageBox(errormessage);
? ExitProcess(0);
}
連接成功之后向數據庫執行查詢語句select ALL* from userinfo,在按鈕里添加如下代碼。
void CUserDlg::OnButtonAll()
{
// TODO: Add your control notification handler code here
m_list.DeleteAllItems();
try
{
? m_pRecordset.CreateInstance("ADODB.Recordset"); //為Recordset對象創建實例
? _bstr_t strCmd = "select ALL* from userinfo";?? //SQL語句
? m_pRecordset=m_pConnection->Execute(strCmd,&RecordsAffected,adCmdText);? //執行
?
}
catch(_com_error &e)
{
? AfxMessageBox(e.Description());
}
? //SQL語句執行成功之后,以下的代碼是獲取記錄返回的數據
_variant_t userid, username, u_groupid, u_tim, u_timed_tim, u_qq,
? u_email,u_realname,u_address,u_postcode,u_phone;
try
{
? while(!m_pRecordset->adoEOF)
? {
?? //獲取返回的記錄
?? userid=m_pRecordset->GetCollect("userid");
?? username=m_pRecordset->GetCollect("username");
?? u_groupid=m_pRecordset->GetCollect("u_groupid");
?? u_tim=m_pRecordset->GetCollect("u_tim");
?? u_timed_tim=m_pRecordset->GetCollect("u_timed_tim");
?? u_qq = m_pRecordset->GetCollect("u_qq");
?? u_email = m_pRecordset->GetCollect("u_email");
?? u_realname = m_pRecordset->GetCollect("u_realname");
?? u_address = m_pRecordset->GetCollect("u_address");
?? u_postcode = m_pRecordset->GetCollect("u_postcode");
?? u_phone = m_pRecordset->GetCollect("u_phone");
? //對返回的用戶信息記錄插入m_list?
?? if(userid.vt!=VT_NULL)
?? {
??? m_list.InsertItem(0,(LPCTSTR)(_bstr_t)userid);
?? }
?? if (username.vt!=VT_NULL)
?? {
??? m_list.SetItemText(0,1,(LPCTSTR)(_bstr_t)username);
?? }
?? if (u_groupid.vt!=VT_NULL)
?? {
??? m_list.SetItemText(0,2,(LPCTSTR)(_bstr_t)u_groupid);
?? }
?? if (u_timed_tim.vt!=VT_NULL)
?? {
??? m_list.SetItemText(0,3,(LPCTSTR)(_bstr_t)u_tim);
?? }
?? if (u_timed_tim.vt!=VT_NULL)
?? {
??? m_list.SetItemText(0,4,(LPCTSTR)(_bstr_t)u_timed_tim);
?? }
?? if (u_qq.vt!=VT_NULL)
?? {
???? m_list.SetItemText(0,5,(LPCTSTR)(_bstr_t)u_qq);
?? }
?? if (u_email.vt!=VT_NULL)
?? {
???? m_list.SetItemText(0,6,(LPCTSTR)(_bstr_t)u_email);
?? }
?? if (u_realname.vt!=VT_NULL)
?? {
???? m_list.SetItemText(0,7,(LPCTSTR)(_bstr_t)u_realname);
?? }
?? if (u_address.vt!=VT_NULL)
?? {
???? m_list.SetItemText(0,8,(LPCTSTR)(_bstr_t)u_address);
?? }
?? if (u_postcode.vt!=VT_NULL)
?? {
???? m_list.SetItemText(0,9,(LPCTSTR)(_bstr_t)u_postcode);
?? }
?? if (u_phone.vt!=VT_NULL)
?? {
???? m_list.SetItemText(0,10,(LPCTSTR)(_bstr_t)u_phone);
?? }
?? m_pRecordset->MoveNext();
? }
}
catch(_com_error &e)
{
? AfxMessageBox(e.Description());
}
m_pRecordset->Close();?? //關閉記錄對象
m_pRecordset=NULL;????
}
總結
以上是生活随笔為你收集整理的ADO连接ACCESS数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开始学习缓冲区溢出
- 下一篇: SQL2000自动备份