① vc++ 用ADO鏈接資料庫怎麼連
由於我也剛開始學,前幾天找到的,好使,我試過的,有什麼問題你可以問我
首先,要用#import語句來引用支持ADO的組件類型庫(*.tlb),其中類型庫可以作為可執行程序(DLL、EXE等)的一部分被定位在其自身程序中的附屬資源里,如:被定位在msado15.dll的附屬資源中,只需要直接用#import引用它既可。可以直接在Stdafx.h文件中加入下面語句來實現:
#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")
其中路徑名可以根據自己系統安裝的ADO支持文件的路徑來自行設定。當編譯器遇到#import語句時,它會為引用組件類型庫中的介面生成包裝類,#import語句實際上相當於執行了API涵數LoadTypeLib()。#import語句會在工程可執行程序輸出目錄中產生兩個文件,分別為*.tlh(類型庫頭文件)及*.tli(類型庫實現文件),它們分別為每一個介面產生智能指針,並為各種介面方法、枚舉類型,CLSID等進行聲明,創建一系列包裝方法。語句no_namespace說明ADO對象不使用命名空間,rename ("EOF", "adoEOF")說明將ADO中結束標志EOF改為adoEOF,以避免和其它庫中命名相沖突。
其次,在程序初始過程中需要初始化組件,一般可以用CoInitialize(NULL);來實現,這種方法在結束時要關閉初始化的COM,可以用下面語句CoUnInitialize();來實現。在MFC中還可以採用另一種方法來實現初始化COM,這種方法只需要一條語句便可以自動為我們實現初始化COM和結束時關閉COM的操作,語句如下所示: AfxOleInit();
接著,就可以直接使用ADO的操作了。我們經常使用的只是前面用#import語句引用類型庫時,生成的包裝類.tlh中聲明的智能指針中的三個,它們分別是_ConnectionPtr、_RecordsetPtr和_CommandPtr。下面分別對它們的使用方法進行介紹:
1、_ConnectionPtr智能指針,通常用於打開、關閉一個庫連接或用它的Execute方法來執行一個不返回結果的命令語句(用法和_CommandPtr中的Execute方法類似)。
——打開一個庫連接。先創建一個實例指針,再用Open打開一個庫連接,它將返回一個IUnknown的自動化介面指針。代碼如下所示:
_ConnectionPtr m_pConnection;
// 初始化COM,創建ADO連接等操作
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));
// 在ADO操作中建議語句中要常用try...catch()來捕獲錯誤信息,
// 因為它有時會經常出現一些意想不到的錯誤。jingzhou xu
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;
}
——關閉一個庫連接。如果連接狀態有效,則用Close方法關閉它並賦於它空值。代碼如下所示:
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
② 用VC怎麼連接sql資料庫
我用的是數據源ODBC。先打開控制面板上的管理工具。然後打開數據源。添加描述數據什麼。然後去到vc那裡。新建單個文檔。下一步選擇W資料庫查看使用文件支持,單擊DatabaseSource按鈕。選擇之前你設好的數據源。就連好了資料庫了。
③ VC怎麼操作資料庫
你必須建立資料庫的工作...
在「控制面板」,選擇「管理工具」,打開數據源(ODBC),然後ODBC數據源管理器對話框彈出。系統
打開「DNS」選項卡上,單擊「添加」,選擇。附上海塗種植Access驅動程序(* mdb)中,單擊「完成」,然後輸入數據源的名稱和說明。 (如果你是在其他人的代碼,數據源的名稱可能得到,所以你必須找到工作,他使用的數據源名稱)。
(你下載的源代碼的資料庫的路徑),然後選擇資料庫。
它只是設置。 。 。
④ VC++連接資料庫問題
我先幫你把語句解釋下,
CLoginSet是C++封裝的一個連接資料庫的類,至於類的成員函數與成員變數你自己可以查msdn去了解它的功能,先用CLoginSet 定義了一個指針,構造時同時傳入m_database的值,m_database它應該是一個資料庫類型的指針,包含了資料庫的名字,連接欄位,開啟連接的操作(相當於C#的open()函數)等等,然後就執行sql的語句,(就是你省略的部分),strSQL是一個資料庫操作類的一個實例,Rormat是該類的成員函數,作用是保存sql語句。
這么解釋你是不是覺得一頭霧水,不知道你知不是類和實例的概念,類就是實例的抽象,比如人這個類就是可以吃飯,走路,睡覺,工作,談戀愛等等,但是每個人的這些屬性都不一樣,喜歡不一樣的飯菜,不同的走路習慣,不同睡姿,不同工作,喜歡不一樣的人。
計算機裡面的類也是這樣,連接類就包括,連接資料庫,開啟資料庫,關閉資料庫,但是連接哪個資料庫,什麼時候開啟和關閉都是每個實例都不同的。CloginSet就是一個連接類,只是定義它的類的內容已經被C++封裝起來了,你只需要知道介面是什麼,怎麼用就行,但是你需要實例化一個對象(就是m_recordset)來完成連接特定資料庫這一操作,實例化的同時你就告訴它我要連接m_database這個資料庫。strSQL是另外一個類實例化出來的對象,完成查詢等一系列資料庫的操作。
如果你看不懂,肯定幾個詞不明白,類,對象,實例化,實例,封裝,介面,等。等你知道他們的含義,就知道他們之間的道理了。
C++連資料庫確實不容易上手,相比較而言建議你用C#語言(vs2005平台)來做資料庫的管理系統實驗,它更容易上手,也更容易理解類和實例的關系,這些面向對象的思想。
⑤ VC與資料庫連接(資料庫該怎麼建 )
資料庫隨便建啊,沒要求的,程序裡面的連接字元串設置好資料庫地址,資料庫名,登錄用戶名,登錄密碼就可以連了,和資料庫裡面具體欄位沒什麼關系~
⑥ VC++中怎樣連接資料庫
(1)打開VC工具欄Tools菜單下的Options選項,在Directories的標簽頁中右邊的「Show directories for:」下拉列表中選中「Includefiles」,然後在中間列表框中添加你本地安裝MySQL的include目錄路徑。
⑦ 怎麼用VC連接ACCESS資料庫
1.頭文件引入ado庫;2.初始化com庫;3.寫具體代碼;例如以下代碼可以實現連接access資料庫並讀取欄位內容到listbox中:void CSJKDlg::OnButton1()
{
// TODO: Add your control notification handler code here
_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();
m_pRecordset.Release();
m_pConnection.Release();
}