① VC++連接ACCess資料庫
注意加異常判斷,你這個程序,如果pConn->Open是錯誤的或者說沒有打開,那後面肯定會報錯的,你可以用HRESULT hr=pConn->Open來判斷, if(SUCCESS(hr)) pRst=pConn->Execute
最後釋放的時候注意判斷狀態, if(pConn->state !=NULL) pConn->Close(),否則如果你 pConn失敗的,必然會報錯,注意各種異常處理
② 求解VC訪問Access資料庫問題~
你是想要ACCESS作為資料庫用,還是用ACCESS作後台資料庫自己做軟體?如果做軟體的話,找一些ACCESS與一些編程語言一起做的案例式的書就好了。如果學資料庫就沒關系吧,ACCESS不像資料庫,像Office,你不如找sql Server的書學,學會了再回來用ACCESS就全都會了。但ACCESS好像基於SQL92的,與主流資料庫的SQL語言有一點點區別,也少了很多高級的東西。
③ 如何在VC++中使用ACCESS資料庫
很簡單,建好資料庫表後,到控制面板--管理工具的數據源中,添加你建資料庫驅動,即是設置數據源。命個名字。以便在VC程序中連接這個數據源。就可以用了。
在類中聲明一個資料庫對象。
CDatabase m_database;
m_database.Open(_T("數據源名");這樣就連接了數據源。
C**Recordset m_recordset;//這個記錄集是和你表相聯的類。關聯你會吧,就是在工作區中新建一個類,該類命名為C**Recordset。選擇基類CRecordset.向導會彈出一個對話框,然後你找到你建表的目錄,雙擊你要關聯的表。向導就會自動完成。這個記錄集,你完全要可不要動。在程序中直接引用就形了。
m_recordset(&m_database);//記錄集關聯資料庫。
CString csSQL;
csSQL=_T("");//字元串初始化
csSQL=_T("select * from **/*表名*/where CHEPAIHAO_ID=%d"),1);
m_recordset.Open(AFX_DB_DEFAULT_TYPE,csSQL);//打開記錄集第一行。
if(m_recordset.GetRecordCount()==0)
{
csSQL.Format(_T("insert into **/*表名*/ values(%d,\'%d-%d-%d\')"),m_chepaihao,m_datatime.GetYear(),m_datatime.GetMonth,m_datatime.GetDay());
//其中m_chepaihao是與車牌編輯框相關聯的字元串,m_datatime是與日期控制項相關聯的Time變數。
m_database.ExecuteSQL(csSQL);//
m_database.Close();
}
//這就添加了一行。
當然這是簡化的主要操作。你想,如果要添加一行,一般就是在對話框中,按一個按鈕,彈出令一個對話框,從這個對話框中填上車牌號,和選擇日期。然後按確定按鈕。即執行上面的代碼,添加了一行。
自己多想點。如果會VC難不到你的。
④ VC++6.0與access資料庫的連接
使用ADO方法訪問access資料庫:
使用ADO連接資料庫是通過Connection對象的Open方法實現的,語法是:
Connection.Open Connectionstring.userID.password,openoptions
參數說明:
Connectionstring:(可選)字元串,包含連接信息
userID:(可選)字元串,包含連接時所使用的用戶名稱
password:(可選)字元串,包含建立連接時多用密碼
openoptions:(可選)ConnectoptionEnum值,如果設置為adConnectoAsync,則非同步打開連接。當連接。當連接可用時將產生ConnectComplete事件
具體的實現方法如下:
void CConnectDlg::OnInitADOConn()
{
try
{
//創建連接對象實例
m_pConnection.CreateInstance("ADODB.Connection");
//設置連接字元串
CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)};\
uid=;pwd=;DBQ=shujuku.mdb;";
//使用Open方法連接資料庫
m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
void CConnectDlg::ExitConnect()
{
//關閉記錄集和連接
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
}
至於視頻的我真沒有了,呵呵,你個小子,怎麼弄起資料庫來了
⑤ vc++中 怎樣讀取Access資料庫
VC下利用ADO連接Access資料庫
#include <iostream.h>
#import "c:\\program files\\common files\\system\\ado\\msado15.dll" no_namespace rename ("EOF", "adoEOF")
int main(){
//使用ADO連接資料庫...
//---------------------------------------------------------------------------------
_ConnectionPtr m_pConnection;
CoInitialize(NULL);
m_pConnection.CreateInstance(__uuidof(Connection));
// 在ADO操作中建議語句中要常用try...catch()來捕獲錯誤信息,
// 因為它有時會經常出現一些想不到的錯誤。
try
{
// 打開本地Access庫db1.mdb
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
cout<<"資料庫連接失敗,確認資料庫db1.mdb是否在當前路徑下!"<<endl;
return FALSE;
}
//-------------------------------------------------------------------------------------
//建立數據集
//-------------------------------------------------------------------------------------
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 在ADO操作中建議語句中要常用try...catch()來捕獲錯誤信息,
// 因為它有時會經常出現一些意想不到的錯誤。
try
{
m_pRecordset->Open("SELECT * FROM Home2",
m_pConnection.GetInterfacePtr(), // 獲取庫接庫的IDispatch指針
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
//AfxMessageBox(e->ErrorMessage());
cout<<e->ErrorMessage()<<endl;
}
//--------------------------------------------------------------------------------------
//讀取數據
//--------------------------------------------------------------------------------------
_variant_t var;
char *strID,*strX,*strY;
float X,Y;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
cout<<"表內數據為空"<<endl;
return 1;
}
// 讀入庫中各欄位並加入列表框中
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("ID");
if(var.vt != VT_NULL)
strID= _com_util::ConvertBSTRToString((_bstr_t)var); //_variant_t轉字元串
var = m_pRecordset->GetCollect("X");
if(var.vt != VT_NULL)
strX=_com_util::ConvertBSTRToString((_bstr_t)var);
var = m_pRecordset->GetCollect("Y");
if(var.vt != VT_NULL)
strY=_com_util::ConvertBSTRToString((_bstr_t)var);
cout<<strID<<"is"<<strX<<" "<<strY<<endl;
m_pRecordset->MoveNext();
}
}
catch(_com_error *e)
{
cout<<e->ErrorMessage()<<endl;
}
//--------------------------------------------------------------------------------------
//關閉數據集
m_pRecordset->Close();
m_pRecordset = NULL;
//--------------------------------------------------------------------------------------
//關閉資料庫連接
//--------------------------------------------------------------------------------------
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
return 0;
}
⑥ 怎麼用VC連接ACCESS資料庫
_variant_t var; CString strName,strAdd; m_pConnection.CreateInstance(__uuidof(Connection)); m_pRecordset.CreateInstance(__uuidof(Recordset)); try{m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\My Documents\\sjk.mdb", "","",adModeUnknown);}catch(_com_error e){AfxMessageBox("資料庫連接失敗,確認資料庫sjk.mdb是否在當前路徑下!"); //return FALSE;} try{m_pRecordset->Open("SELECT * FROM biao", m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);}catch(_com_error *e){AfxMessageBox(e->ErrorMessage());} try{if(!m_pRecordset->BOF) m_pRecordset->MoveFirst();else{MessageBox("表內數據為空"); } while(!m_pRecordset->adoEOF){var = m_pRecordset->GetCollect("name"); if(var.vt != VT_NULL) strName = (LPCSTR)_bstr_t(var); var = m_pRecordset->GetCollect("add"); if(var.vt != VT_NULL) strAdd = (LPCSTR)_bstr_t(var); m_AccessList.AddString( strName + " --> "+strAdd ); m_pRecordset->MoveNext(); } m_AccessList.SetCurSel(0);}catch(_com_error *e){MessageBox(e->ErrorMessage());}m_pRecordset->Close(); m_pConnection->Close();
⑦ VC怎麼查詢access資料庫查詢
一、使用ODBC介面,在這里我們使用MFC的CDatabase類,該類是對SQLConnect等ODBC的API的封裝。需要包含afxdb.h
BOOL ODBCConnect(CString strDBFile)
{
CString strConnect;
strConnect.Format(_T("ODBC;DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)};UID=sa;PWD=;DBQ=%s"), strDBFile);
CDatabase db;
if(db.Open(NULL, FALSE, FALSE, strConnect))
{
//連接資料庫成功
CRecordset rs(&db);
CString strSql;
strSql = _T("select * from info"); //SQL語句
rs.Open(AFX_DB_USE_DEFAULT_TYPE, strSql); //執行Sql語句(可添加刪除查詢等)
if(rs.IsOpen())
{
CDBVariant variant;
rs.MoveFirst();
while(!rs.IsEOF())
{
//讀取記錄
rs.GetFieldValue(_T("姓名"), variant);
rs.MoveNext();
}
}
db.Close();
return TRUE;
}
return FALSE;
}
二、使用ADO連接資料庫,因為要使用COM,需要初始化(CoInitialize).然後就可以生成介面的對象操作,代碼如下:
#import "C:Program Files/Common Files/System/ado/msado15.dll" rename("EOF", "adoEOF") //生成C++類,改變EOF函數的名稱
using namespace ADODB;
BOOL ADOConnect(CString strDBFile)
{
_ConnectionPtr pConnection;
if(pConnection.CreateInstance(__uuidof(Connection)) != S_OK)
{
return FALSE;
}
CString strConnect;
strConnect.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s"), strDBFile);
if(pConnection->Open(_bstr_t(strConnect), "", "", adModeUnknown) == S_OK)
{
//連接資料庫成功
_RecordsetPtr pRecordset;
if(pRecordset.CreateInstance(__uuidof(Recordset)) != S_OK)
{
pConnection->Close();
return FALSE;
}
CString strSql;
strSql = _T("select * from info");
HRESULT hr = pRecordset->Open(_bstr_t(strSql), _variant_t((IDispatch*)pConnection, TRUE), adOpenUnspecified, adLockUnspecified, adCmdUnknown);
if(hr != S_OK)
{
pConnection->Close();
return FALSE;
}
_variant_t vt;
pRecordset->MoveFirst();
while(!pRecordset->adoEOF)
{
vt = pRecordset->Fields->GetItem("姓名")->Value;
pRecordset->MoveNext();
}
pConnection->Close();
return TRUE;
}
return FALSE;
}
⑧ vc連接ACCESS資料庫
你自己得先設置一下資料庫才行...
在控制面板里選擇管理工具,打開數據源(ODBC),這時彈出ODBC數據源管理器對話框。
打開系統DNS選項卡,點擊添加,選擇Micorsoft Access Driver(*mdb),點擊完成後,再輸入數據源名和說明。(這里你下的是人家的代碼,他的數據源名稱可能是給定的,因此你得找到他使用的數據源名才行)。
然後在選擇資料庫(你下載的源碼中帶的資料庫的路徑)。
這樣才算設置好。。。
⑨ VC遠程連接access資料庫
access本身是本地資料庫,原則上不能遠程訪問。可以用sql 2005,然後用c++中的AD0,具體用法網路搜索C++的ADO操作 很多例子,或者用java中jdbc訪問,自己看看書
⑩ 怎樣用C++連接並使用access資料庫
使用C++編程語言,連接對Access資料庫進行操作,常用的方法有DAO和ADO兩種方式,本文將介紹採用ADO的方式方位Access資料庫。
先介紹一下ADO,ADO (ActiveX Data Objects) 是一個用於存取數據源的COM組建。它提供了編程語言和統一數據訪問方式OLE DB的一個中間層。允許開發人員編寫訪問數據的代碼而不用關心資料庫是如何實現的,而只用關心到資料庫的連接。
在程序的開始,首先導入所需要的庫:#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") ,這里重命名EOF是必要的,因為典型的VC應用都已經定義了EOF作為常數-1。
完整的程序如下,以注釋的形式來對程序進行解釋:
_ConnectionPtr m_pConnection; //連接access資料庫的鏈接對象
_RecordsetPtr m_pRecordset; //結果集對象
CoInitialize(NULL); //初始化
m_pConnection.CreateInstance(__uuidof(Connection)); //實例化對象
//連到具體某個mdb ,此處的的Provider語句因Access版本的不同而有所不同。
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyAccess.mdb","","", adModeUnknown);
}
catch(_com_error e)
{
AfxMessagebox(_T("資料庫連接失敗!"));
return;
}
m_pRecordset.CreateInstance(__uuidof(Recordset)); //實例化結果集對象
//執行sql語句
try
{
CString sql= _T("select * from Patient");
m_pRecordset->Open(sql, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
if(m_pConnection->State)
{
m_pConnection->Close();
m_pConnection= NULL;
}
return ;
}
//處理結果集
try
{
//若結果為空,結束
if(m_pRecordset->BOF)
{
AfxMessageBox_T(("表內數據為空!"));
if(m_pConnection->State)
{
m_pRecordset->Close();
m_pRecordset = NULL;
m_pConnection->Close();
m_pConnection= NULL;
}
return ;
}
//游標定位到第一條記錄
m_pRecordset->MoveFirst();
_variant_t var; //從結果集中取出的數據放到var中
char *name;
while(!m_pRecordset->adoEOF)
{
var= m_pRecordset->GetCollect("Name"); //要取欄位的名稱。
if(var.vt != VT_NULL)
{
name= _com_util::ConvertBSTRToString((_bstr_t)var); //轉換成char*類型
}
string MyName = name;
m_pRecordset->MoveNext();
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMssage());
}
//退出程序時的處理 ,關閉資料庫的相關操作
if(m_pConnection->State)
{
m_pRecordset->Close();
m_pRecordset = NULL;
m_pConnection->Close();
m_pConnection= NULL;
}