新聞中心
在計(jì)算機(jī)的應(yīng)用開(kāi)發(fā)中,數(shù)據(jù)庫(kù)扮演著非常重要的角色。許多程序都需要與數(shù)據(jù)庫(kù)進(jìn)行交互,進(jìn)行數(shù)據(jù)的存取、更新等操作。在WINDOWS開(kāi)發(fā)中,常見(jiàn)的關(guān)系型數(shù)據(jù)庫(kù)包括Microsoft SQL Server、MySQL、Oracle等,而ACCESS也是其中的一種數(shù)據(jù)庫(kù)。ACCESS具有易于使用、集成性強(qiáng)、支持多用戶等特點(diǎn),因此在WINDOWS應(yīng)用程序開(kāi)發(fā)中得到廣泛應(yīng)用。

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、松北網(wǎng)絡(luò)推廣、小程序設(shè)計(jì)、松北網(wǎng)絡(luò)營(yíng)銷、松北企業(yè)策劃、松北品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供松北建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
本文將簡(jiǎn)要介紹VC中ADO開(kāi)發(fā)Access數(shù)據(jù)庫(kù)的相關(guān)內(nèi)容。其中,VC指Visual C++。ADO即ActiveX Data Objects,是Microsoft開(kāi)發(fā)的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)。Access則是一種關(guān)系型數(shù)據(jù)庫(kù),擁有微軟Office套件搭配使用的操作便捷性和通用性。
1. VC中ADO連接Access數(shù)據(jù)庫(kù)
在VC中,連接數(shù)據(jù)庫(kù)使用的是ADO。ADO提供了一套簡(jiǎn)單的、基于COM的數(shù)據(jù)訪問(wèn)接口,是一種高效的跨平臺(tái)、跨數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)方法。使用ADO連接Access數(shù)據(jù)庫(kù)需要先添加 Microsoft ActiveX Data Objects Library(在VC的菜單欄中選擇“項(xiàng)目”-“添加引用”)。
連接Access數(shù)據(jù)庫(kù)步驟如下:
1)編寫連接字符串
ConnectString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + m_strPath + “;Jet OLEDB:Database Password=” + m_strPassword;
其中,Provider為數(shù)據(jù)庫(kù)提供程序,”Microsoft.Jet.OLEDB.4.0″為Access2023及以下版本的提供程序,”Microsoft.ACE.OLEDB.12.0″為Access2023及以上版本的提供程序;
Data Source為數(shù)據(jù)庫(kù)源,即Access數(shù)據(jù)庫(kù)文件路徑;
Jet OLEDB:Database Password為數(shù)據(jù)庫(kù)密碼,如果沒(méi)有密碼,則可以省略。
2)創(chuàng)建ADO連接對(duì)象和記錄集對(duì)象
CADOConnection m_conn;//連接對(duì)象
CADORecordset m_rs;//記錄集對(duì)象
3)打開(kāi)數(shù)據(jù)庫(kù)連接
BOOL bOpen = m_conn.Open(ConnectString, NULL, NULL, adConnectUnspecified);
其中,之一個(gè)參數(shù)為連接字符串;
第二個(gè)參數(shù)為連接的用戶名,這里不需要填寫;
第三個(gè)參數(shù)為連接的密碼,這里也不需要填寫;
第四個(gè)參數(shù)為連接選項(xiàng),常常指定為adConnectUnspecified。
4)打開(kāi)記錄集
BOOL b = m_rs.Open(strSQL, &m_conn, adOpenStatic, adLockReadOnly, adCmdText);
其中,之一個(gè)參數(shù)為SQL查詢語(yǔ)句;
第二個(gè)參數(shù)為連接對(duì)象;
第三個(gè)參數(shù)為ADO打開(kāi)記錄集方式,包括:
adOpenForwardOnly:只向前滾動(dòng),不可修改,既低效又不太靈活。
adOpenKeyset:只向前滾動(dòng),可修改,可以查看引用的數(shù)據(jù)表的所有數(shù)據(jù),但查看數(shù)據(jù)表的速度會(huì)變慢。
adOpenDynamic:動(dòng)態(tài)全部滾動(dòng),可修改,可以查看數(shù)據(jù)表的所有數(shù)據(jù),包括新增加和刪除的記錄,但查看數(shù)據(jù)表的速度是最慢的,使用時(shí)要注意。
adOpenStatic:靜態(tài)全部滾動(dòng),不可修改,速度很快,特別是當(dāng)記錄集被緩存后,速度是最快的。這種方式只適用于只讀的數(shù)據(jù)結(jié)果集。
第四個(gè)參數(shù)為查詢類型,常常指定為adCmdText。
連接完畢后,便可以進(jìn)行對(duì)數(shù)據(jù)庫(kù)的操作了,包括執(zhí)行SQL語(yǔ)句、查詢記錄、增刪改記錄等。下面介紹幾個(gè)常用的操作。
2. 執(zhí)行SQL語(yǔ)句
在VC中,可以使用ADO連接Access數(shù)據(jù)庫(kù)執(zhí)行SQL語(yǔ)句,包括查詢、新增、修改和刪除等,具體方法如下:
CString strSQL =
“SELECT * FROM student”;
m_rs.Open(strSQL,&m_conn,&adOpenStatic,&adLockReadOnly,&adCmdText);
if (!m_rs.IsEOF())
{
m_rs.MoveFirst(); //將記錄集指向之一行。
while(!m_rs.IsEOF())
{
//執(zhí)行具體的操作
}
}
字符串strSQL定義了要執(zhí)行的SQL語(yǔ)句,可以是任何符合SQL語(yǔ)法的命令;
數(shù)據(jù)庫(kù)連接對(duì)象m_conn和記錄集對(duì)象m_rs通過(guò)Open函數(shù)打開(kāi)連接和記錄集;
查詢結(jié)果記錄集通過(guò)Fetch函數(shù)獲取到本地,記錄集指針隨著每次訪問(wèn)結(jié)果集而移動(dòng)。
3. 查詢記錄
查詢記錄常常與執(zhí)行SQL語(yǔ)句結(jié)合使用,調(diào)用ADO連接對(duì)象的Execute函數(shù)得到Recordset對(duì)象,再通過(guò)MoveNext函數(shù)進(jìn)行單條數(shù)據(jù)訪問(wèn),具體方法如下:
CString strQuery = “SELECT * FROM student WHERE ID = 1”;
m_rs.Open(strQuery,&m_conn,&adOpenStatic,&adLockReadOnly,&adCmdText);
while( !m_rs.EOF )
{
for (int i = 0; i GetCount(); i++) //遍歷當(dāng)前行的字段
{
CString fieldName = m_rs.Fields->Item[i]->Name;
CString value = ((CString)(m_rs.Fields->Item[i]->Value));
}
m_rs.MoveNext();
}
首先定義SQL查詢語(yǔ)句strQuery,可以包括條件等,最終的查詢結(jié)果可以是很多行數(shù)據(jù);
通過(guò)執(zhí)行Open函數(shù)指定的SQL語(yǔ)句打開(kāi)某個(gè)記錄集,其中Open的第二個(gè)參數(shù)為連接對(duì)象m_conn,最后一個(gè)參數(shù)為查詢類型adCmdText;
通過(guò)循環(huán)訪問(wèn)m_rs,查詢SQL語(yǔ)句的結(jié)果;
通過(guò)輔以Recordset對(duì)象中的字段對(duì)象,讀取每一行記錄中的字段,進(jìn)行解析。
4. 增加記錄
增加記錄可通過(guò)調(diào)用數(shù)據(jù)庫(kù)連接對(duì)象m_conn及其相關(guān)方法完成,具體方法如下:
CString strSQLInsert = “INSERT INTO student ” \
“(Name, Age, Grade) ” \
“VALUES (‘Peter’, 20, 100)”;
BOOL bInsert = m_conn.Execute((_bstr_t)strSQLInsert, NULL, adCmdText);
其中,SQL語(yǔ)句定義了要操作的表和具體的增加內(nèi)容,VALUES后為要插入的具體數(shù)據(jù);
使用m_conn對(duì)象的Execute函數(shù)執(zhí)行SQL語(yǔ)句,之一個(gè)參數(shù)為執(zhí)行的SQL語(yǔ)句,第二個(gè)參數(shù)為記錄集對(duì)象,第三個(gè)參數(shù)為查詢類型。
5. 刪除記錄
同樣可以使用ADO連接對(duì)象m_conn及其相關(guān)方法完成刪除記錄的操作,具體方法如下:
CString strSQLDelete = “DELETE FROM student WHERE Name = ‘Peter'”;
BOOL bDelete = m_conn.Execute((_bstr_t)strSQLDelete, NULL, adCmdText);
其中,SQL語(yǔ)句定義了要操作的表以及具體刪除的條件;
使用m_conn對(duì)象的Execute函數(shù)執(zhí)行SQL語(yǔ)句,之一個(gè)參數(shù)為執(zhí)行的SQL語(yǔ)句,第二個(gè)參數(shù)為記錄集對(duì)象,第三個(gè)參數(shù)為查詢類型。
6. 修改記錄
注:涉及知識(shí)點(diǎn)較多,建議了解基本的SQL語(yǔ)法和語(yǔ)句結(jié)構(gòu)。修改記錄可以使用Ado連接對(duì)象m_conn及其相關(guān)方法完成,具體方法如下:
CString strSQLUpdate = “UPDATE student SET Grade=80 WHERE Name = ‘Peter'”;
BOOL bUpdate = m_conn.Execute((_bstr_t)strSQLUpdate, NULL, adCmdText);
其中,SQL語(yǔ)句定義了要操作的表以及具體增加的條件;
使用m_conn對(duì)象的Execute函數(shù)執(zhí)行SQL語(yǔ)句,之一個(gè)參數(shù)為執(zhí)行的SQL語(yǔ)句,第二個(gè)參數(shù)為記錄集對(duì)象,第三個(gè)參數(shù)為查詢類型。
本文主要介紹了VC中ADO連接Access數(shù)據(jù)庫(kù)的一些常用方法,包括連接數(shù)據(jù)庫(kù)、執(zhí)行SQL語(yǔ)句、查詢記錄、增刪改數(shù)據(jù)等。VC中ADO連接Access是進(jìn)行WINDOWS應(yīng)用程序開(kāi)發(fā)中非常常見(jiàn)的操作之一,根據(jù)實(shí)際需要可進(jìn)行靈活運(yùn)用,同時(shí)也需要把握SQL基礎(chǔ)知識(shí)和語(yǔ)句的結(jié)構(gòu),才能更好地進(jìn)行開(kāi)發(fā)實(shí)踐。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220關(guān)于VC++ 6.0 用ADO控件訪問(wèn)Access的問(wèn)題
strConnection 字段有問(wèn)題,數(shù)據(jù)庫(kù)不存在,應(yīng)該是路徑問(wèn)題
ADO還是需要進(jìn)行錯(cuò)誤捕捉的,即便遇上了用戶操作錯(cuò)誤,也不至于導(dǎo)致程序強(qiáng)制退出。
養(yǎng)成捕捉錯(cuò)誤的良好習(xí)慣!用戶一旦發(fā)生了操作錯(cuò)誤,捕捉后,可以給用戶更正的機(jī)會(huì),程序未必一定要強(qiáng)行終止!
try {
hr=pCnn->Open(strConnection,””,””,/*adModeUnknown*/16);
}
catch (_com_error e) {
MessageBox(e.Description(), _T(“操作錯(cuò)誤,請(qǐng)更正”));
}
樓主檢查一下,數(shù)據(jù)庫(kù)(DataBaseSS.mdb)在當(dāng)前目錄中嗎?加上絕對(duì)路徑試試
看(Data Source = C:\\XX\\DataBaseSS.mdb)!
同意樓上兩位的見(jiàn)解,肯定是Data Source=DataBaseSS.mdb中要連接的數(shù)據(jù)庫(kù)DataBaseSS.mdb不在工程的當(dāng)前目錄下,可以將數(shù)據(jù)庫(kù)文件DataBaseSS.mdb拷貝到工程目錄下,即該工程的存放.cpp和.h文件的文件夾下,或者在Data Source=DataBaseSS.mdb中將.mdb完整路徑添加完整。然后重新編譯調(diào)試。
雖然接觸的時(shí)間不長(zhǎng)但覺(jué)得是指針上的錯(cuò)誤,程序出現(xiàn)了野指針或無(wú)效的游標(biāo),要不用try catch試試
(MFC)在VC6.0下面利用ADO讀寫access數(shù)據(jù)庫(kù)能刪除不能插入修改
盡量不要用關(guān)鍵字,比如password,username等,把它變成mypassword或其它。
vc 使用ado開(kāi)發(fā)access數(shù)據(jù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于vc 使用ado開(kāi)發(fā)access數(shù)據(jù)庫(kù),VC中ADO開(kāi)發(fā)Access數(shù)據(jù)庫(kù)詳解,關(guān)于VC++ 6.0 用ADO控件訪問(wèn)Access的問(wèn)題,(MFC)在VC6.0下面利用ADO讀寫access數(shù)據(jù)庫(kù)能刪除不能插入修改的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技公司主營(yíng):網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、小程序制作、成都軟件開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、微信開(kāi)發(fā)、成都小程序開(kāi)發(fā)、網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)等業(yè)務(wù),是專業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫冊(cè)、網(wǎng)頁(yè)、VI設(shè)計(jì),網(wǎng)站、軟件、微信、小程序開(kāi)發(fā)于一體。
分享文章:VC中ADO開(kāi)發(fā)Access數(shù)據(jù)庫(kù)詳解(vc使用ado開(kāi)發(fā)access數(shù)據(jù)庫(kù))
當(dāng)前網(wǎng)址:http://m.fisionsoft.com.cn/article/dhoospd.html


咨詢
建站咨詢
