1. 在MFC中使用ADO連接ACCESS資料庫
在StdAfx.h中導入ADO動態鏈接庫
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace \
rename("EOF","adoEOF")rename("BOF","adoBOF")
是不是沒有初始化COM啊?
if (CoInitialize(NULL)!=0)
{
AfxMessageBox("初始化COM支持庫失敗!");
exit(1);
}
try
{
m_pConn.CreateInstance("ADODB.Connection");
m_pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=***.mdb","","",adModeUnknown);
}
catch (_com_error e)
{
AfxMessageBox(e.Description());
}
m_pRs.CreateInstance(__uuidof(Recordset));
2. mfc中如何連接access資料庫 求詳細步驟
比如在你的工程目錄中建一個 dbfvir.mdb //Access資料庫,然後你需要做以下操作:
1.在StadAfx.h裡面添加#include <afxdb.h> //新加入頭文件,用於CDatabase類。
2.在StadAfx.h最後的#endif上添加#import "msado15.dll" no_namespace rename("EOF","rsEOF")
這時,你要把msado15.dll拷到與dbf同級的目錄,也就是工程目錄里,當然你可以該路徑
3.在你自己的工程里,比如MyProc是你建的工程,添加代碼
CMyPorcApp::CMyProcApp(){
CoInitialize(NULL);
SQLConfigDataSource(NULL,ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)",
"DSN=MyImage;DBQ=dbf\vir.mdb;DEFAULTDIR=dbf"); //注冊本地資料庫數據源
m_db.OpenEx("DSN=MyImage;;",CDatabase::noOdbcDialog);//MyImage是數據源名稱
}
4.在前面的函數體之前創建全局變數CDatabase m_db; CRecordset m_rec(&m_db);
5.使用資料庫{
CString strSQL="select * from virdb";
BSTR bstrSQL=strSQL.AllocSysString();
m_rec.Open(CRecordset::dynaset,strSQL);
while(!m_rec.IsEOF())
{
// 使用資料庫的代碼,讀出來的數據都是字元串型的
CString MyVirable;
m_rec.GetFieldValue("欄位名",MyVirable); //將某個欄位的當前行的值讀到MyVirabl中
// ......
m_rec.MoveNext(); //將記錄移到下一行
}
}
本程序是自動注冊數據源的,當然可以手動注冊數據源,關於如何注冊數據源並不麻煩,敘述起來不太方面,你就參考其他的吧。不過建議不用手動注冊數據源,這樣你地程序移植性不好.
3. MFC做的登錄界面連接access資料庫
剛剛寫了個access的系統
.cpp中
//hxx函數主要用於打開資料庫連接
void ADOConn::OnInitADOConn()
{
::CoInitialize(NULL); //why初始化OLE/COM庫環境
try
{
m_pCon.CreateInstance("ADODB.Connection"); //創建Connection對象
m_pCon->ConnectionTimeout=3; //設置連接延時
//設置連接字元串why
//m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=InfoMan.mdb","","",adModeUnknown);
m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=InfoMan.mdb;Persist Security Info=False;Jet OLEDB:Database Password=1234","","",adModeUnknown); }
catch(_com_error e) //捕獲異常
{
AfxMessageBox(e.Description()); //顯示錯誤信息
}
}
.h中
#import "G:\\MY_PRO\\InfoMan\\msado15.dll"no_namespace\
rename("EOF","adoEOF")
_ConnectionPtr m_pCon; //添加一個指向Connection對象的指針
_RecordsetPtr m_pRs; //添加一個指向Recordset對象的指針
4. MFC怎麼連接access資料庫
1、在MFC的工程中添加一個access文件
2、在MFC中添加記錄集
try
{
m_pConn.CreateInstance("ADODB.Connection");
_bstr_t Connection ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\\aaaa.mdb;Persist Security Info=False";//aaaa為你的access的文件名
m_pConn->Open(Connection, "", "", adConnectUnspecified);
}
catch(_com_error &e)
{
::CoUninitialize();
::AfxMessageBox(e.ErrorMessage());
return FALSE;
}
3、在stdAfx.h文件中添加語句
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "ENDOFFILE")
4、在需要打開資料庫的地方添加打開表的函數
StrSQL="Select * From bbbb";//bbbb為表名
m_pRs.CreateInstance("ADODB.Recordset");
m_pRs->Open((_variant_t)StrSQL, _variant_t((IDispatch *)theApp.m_pConn,true), adOpenStatic, adLockOptimistic, adCmdText);
{
UpdateData(TRUE);
//需要乾的事情
m_pRs->Update();
}
m_pRs->Close();
5. 如何使用MFC連接ACCESS資料庫
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///
if( TRUE == SUCCEEDED(hr))
{
strDBFile = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strDBFile;
hr = m_pConnection->Open((_bstr_t)strDBFile ,_bstr_t(strUser),_bstr_t(strUser),adModeUnknown);
}
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format("%s",e.ErrorMessage());
AfxMessageBox(errormessage);
return FALSE;
}
6. MFC用ODBC連接ACCESS資料庫問題
1 。把連接資料庫 這個步驟放在視圖/文檔創建時里,添加消息WM_CREATE。在裡面_ConnectionPtr m_con; _bstr_t strcon = "Provider = Microsoft.Jet.OLEDB.4.0;Data source=UserTable.mdb;"; m_con->Open(strcon,"","",adModeUnknown);2 。用文檔的話 要手動態創建創建按鈕或者用菜單來做。在消息或者命令響應里 實現增刪改。
7. VS2010 MFC如何連接Access資料庫
AfxOleInit() _ConnectPtr m_pConnect;指針
try
{
m_pConnection.CreateInstance("ADODB.Connection");
bstr_t strConnect="DRIVER={Microsoft Access Driver (*.mdb,*.accdb)};\
uid=;pwd=;DBQ=mail.accdb;";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
8. 對於MFC連接ACCESS資料庫並在對話框中顯示出來
cdatabase::open;
virtual
bool
open
(
lpctstr
lpszdsn,
bool
bexclusive
=
false,
bool
breadonly
=
false,
lpctstr
lpszconnect
=
「odbc;」,
bool
busecursorlib
=
true
);
throw(
cdbexception,
cmemoryexception
);
參數含義:
lpszdsn指定了數據源名,在lpszconnect參數中也可包括數據源名,此時lpszdsn必需為null,若在函數中未提供數據源名且使lpszdsn為null,則會顯示一個數據源對話框,用戶可以在該對話框中選擇一個數據源.
bexclusive說明是否獨占數據源,由於目前版本的類庫還不支持獨占方式,故該參數的值應該是false,這說明數據源是被共享的.
breadonly若為true則對數據源的連接是只讀的.
lpszconnect指定了一個連接字元串,連接字元串中可以包括數據源名、用戶帳號(id)和口令等信息,字元串中的"odbc"表示要連接到一個odbc數據源上.
busecursorlib若為true,則會裝載游標庫,否則不裝載,快照需要游標庫,動態集不需要游標庫.
參考代碼:
#include
"afxdb.h"
cdatabase
database;
cstring
sdriver
=
"microsoft
access
driver
(*.mdb)";
cstring
sdsn;
cstring
sfile
=
"c://works//readdb//test.mdb";//change
path
here
//
create
odbc
connection
dinamically
sdsn.format("odbc;driver={%s};dsn='';dbq=%s",sdriver,sfile);
//
open
the
database
database.open(null,false,false,sdsn);
9. mfc中連接access資料庫的詳細步驟都是什麼
比如在你的工程目錄中建一個 dbf\vir.mdb //Access資料庫,然後你需要做以下操作:
1.在StadAfx.h裡面添加#include <afxdb.h> //新加入頭文件,用於CDatabase類。
2.在StadAfx.h最後的#endif上添加#import "msado15.dll" no_namespace rename("EOF","rsEOF")
這時,你要把msado15.dll拷到與dbf同級的目錄,也就是工程目錄里,當然你可以該路徑
3.在你自己的工程里,比如MyProc是你建的工程,添加代碼
CMyPorcApp::CMyProcApp(){
CoInitialize(NULL);
SQLConfigDataSource(NULL,ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)",\
"DSN=MyImage;DBQ=dbf\\vir.mdb;DEFAULTDIR=dbf"); //注冊本地資料庫數據源
m_db.OpenEx("DSN=MyImage;;",CDatabase::noOdbcDialog);//MyImage是數據源名稱
}
4.在前面的函數體之前創建全局變數CDatabase m_db; CRecordset m_rec(&m_db);
5.使用資料庫{
CString strSQL="select * from virdb";
BSTR bstrSQL=strSQL.AllocSysString();
m_rec.Open(CRecordset::dynaset,strSQL);
while(!m_rec.IsEOF())
{
// 使用資料庫的代碼,讀出來的數據都是字元串型的
CString MyVirable;
m_rec.GetFieldValue("欄位名",MyVirable); //將某個欄位的當前行的值讀到MyVirabl中
// ......
m_rec.MoveNext(); //將記錄移到下一行
}
}
本程序是自動注冊數據源的,當然可以手動注冊數據源,關於如何注冊數據源並不麻煩,敘述起來不太方面,你就參考其他的吧。不過建議不用手動注冊數據源,這樣你地程序移植性不好.
10. MFC中使用ADO連接access資料庫,但是總在打開記錄集這里報錯中斷,代碼附上,求大神指導
1、記錄集的CreateInstance和Open也需要放到try...catch...裡面,於是發生異常的時候可以通過e.Description()得知具體異常信息;
2、AfxMessageBox出來之後,這里需要退出該函數,否則連接都沒打開,下面的代碼繼續執行毫無意義;
3、別的沒看出什麼問題,但是我打開記錄集一般都用這種方式:
_RecordsetPtrrs=m_pConnection1->Execute("select*fromemployeeswheresex='男'",NULL,adCmdText);
if(rs!=NULL&&!(rs->BOF&&rs->ADOEOF))
{
rs->MoveFirst();
}