新聞中心
作為一名軟件開發(fā)人員,熟悉數(shù)據(jù)庫操作是非常必要的。而ADO(ActiveX Data Objects)數(shù)據(jù)庫作為一種較為通用的數(shù)據(jù)庫訪問技術(shù),被廣泛應(yīng)用于.NET平臺中。本文將從入門到精通,逐步掌握ADO數(shù)據(jù)庫的使用技巧和常見問題的解決方法,幫助讀者更好地理解數(shù)據(jù)庫操作的本質(zhì)。

創(chuàng)新互聯(lián)公司專注于通州企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。通州網(wǎng)站建設(shè)公司,為通州等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì)網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
一、入門
1.1 ADO概述
ADO是Microsoft公司開發(fā)的一種數(shù)據(jù)庫訪問技術(shù),具有靈活、簡單、高效的特點(diǎn),可以與許多不同類型的數(shù)據(jù)庫一起使用,如SQL Server、Oracle等。ADO采用COM(Component Object Model)技術(shù),使得開發(fā)者可以輕松地在.NET平臺中進(jìn)行各種數(shù)據(jù)庫操作,包括增刪改查、數(shù)據(jù)管理和事務(wù)控制等。
1.2 ADO架構(gòu)
ADO的架構(gòu)主要包括以下幾個組件:
– ADO.NET類庫:提供了在.NET平臺中訪問數(shù)據(jù)庫的接口。
– 數(shù)據(jù)提供程序:在ADO.NET類庫的基礎(chǔ)上,通過與特定的數(shù)據(jù)庫進(jìn)行交互,包括SQL Server、Oracle、MySQL等。
– 數(shù)據(jù)集:可以緩存和操作查詢結(jié)果和數(shù)據(jù)表,支持?jǐn)?shù)據(jù)篩選、排序和分組等操作。
– 數(shù)據(jù)適配器:負(fù)責(zé)從數(shù)據(jù)提供程序中檢索數(shù)據(jù),并填充數(shù)據(jù)集。
– 命令對象:用于執(zhí)行SQL語句或存儲過程。
– 連接對象:用于處理與數(shù)據(jù)源的連接和訪問。
– 事務(wù)對象:提供了事務(wù)處理的功能,可以在一組操作中保持原子性和一致性。
1.3 數(shù)據(jù)庫連接
使用ADO連接數(shù)據(jù)庫需要以下步驟:
– 創(chuàng)建數(shù)據(jù)庫連接對象:可以使用SqlConnection類或OracleConnection類等。
– 打開數(shù)據(jù)庫連接:使用Open()方法打開連接。
– 執(zhí)行SQL語句或存儲過程:使用SqlCommand類或OracleCommand類等。
– 讀取或修改數(shù)據(jù):可以使用DataReader類或DataSet類等。如果使用DataReader類,則需要在讀取完數(shù)據(jù)后關(guān)閉數(shù)據(jù)庫連接;如果使用DataSet類,則可以先填充數(shù)據(jù)集再關(guān)閉連接。
二、進(jìn)階
2.1 數(shù)據(jù)庫操作
常用的SQL語句包括Select、Insert、Update和Delete??梢允褂肧qlCommand類或OracleCommand類等執(zhí)行SQL語句,如下所示:
// 創(chuàng)建連接對象
SqlConnection conn = new SqlConnection(connString);
// 打開連接
conn.Open();
// 創(chuàng)建命令對象
SqlCommand cmd = new SqlCommand(“Insert Into Students (Name,Age,Gender) Values(‘Tom’,18,’Male’)”, conn);
// 執(zhí)行命令
int result = cmd.ExecuteNonQuery();
// 關(guān)閉連接
conn.Close();
另外,還可以使用存儲過程來操作數(shù)據(jù)庫,可以使用SqlParameter類設(shè)置存儲過程輸入?yún)?shù),如下所示:
// 創(chuàng)建連接對象
SqlConnection conn = new SqlConnection(connString);
// 打開連接
conn.Open();
// 創(chuàng)建命令對象
SqlCommand cmd = new SqlCommand(“AddStudent”, conn);
// 設(shè)置命令類型為存儲過程
cmd.CommandType = CommandType.StoredProcedure;
// 設(shè)置存儲過程輸入?yún)?shù)
cmd.Parameters.Add(new SqlParameter(“@Name”, SqlDbType.VarChar, 50)).Value = “Tom”;
cmd.Parameters.Add(new SqlParameter(“@Age”, SqlDbType.Int)).Value = 18;
cmd.Parameters.Add(new SqlParameter(“@Gender”, SqlDbType.VarChar, 10)).Value = “Male”;
// 執(zhí)行命令
int result = cmd.ExecuteNonQuery();
// 關(guān)閉連接
conn.Close();
2.2 數(shù)據(jù)庫事務(wù)
事務(wù)是對數(shù)據(jù)庫進(jìn)行一系列相關(guān)操作的單個邏輯單元,要么全部操作成功執(zhí)行,要么全部操作不執(zhí)行。可以使用Transaction對象管理事務(wù),如下所示:
// 創(chuàng)建連接對象
SqlConnection conn = new SqlConnection(connString);
// 打開連接
conn.Open();
// 開始事務(wù)
SqlTransaction trans = conn.BeginTransaction();
try
{
// 創(chuàng)建命令對象
SqlCommand cmd1 = new SqlCommand(“Update Students Set Age = 19 Where Name = ‘Tom'”, conn);
SqlCommand cmd2 = new SqlCommand(“Update Students Set Age = 20 Where Name = ‘Jerry'”, conn);
// 將命令與事務(wù)關(guān)聯(lián)
cmd1.Transaction = trans;
cmd2.Transaction = trans;
// 執(zhí)行命令
int result1 = cmd1.ExecuteNonQuery();
int result2 = cmd2.ExecuteNonQuery();
// 提交事務(wù)
trans.Commit();
}
catch ( Exception ex )
{
// 回滾事務(wù)
trans.Rollback();
}
finally
{
// 關(guān)閉連接
conn.Close();
}
2.3 數(shù)據(jù)庫連接池
使用連接池可以避免每次打開和關(guān)閉連接的開銷,提高應(yīng)用程序的效率。ADO自動使用連接池,當(dāng)打開一個新連接時(shí),將從連接池中獲取一個可用連接,當(dāng)關(guān)閉連接時(shí),將將連接歸還到連接池中。可以使用SqlConnection.ClearPool()方法清除連接池,如下所示:
// 清除連接池中的所有連接
SqlConnection.ClearAllPools();
// 清除指定連接字符串的連接池
SqlConnection.ClearPool(connString);
三、精通
3.1 數(shù)據(jù)庫優(yōu)化
為了提高數(shù)據(jù)庫的查詢效率,需要進(jìn)行一些數(shù)據(jù)庫優(yōu)化操作,如下所示:
– 索引:通過使用索引可以提高查詢速度,建議為經(jīng)常使用到的字段創(chuàng)建索引。
– 段落:合理使用段落可以提高查詢效率,將經(jīng)常查詢的字段放在一個段落中,提高查詢速度。
– 數(shù)據(jù)類型:選擇合適的數(shù)據(jù)類型可以減小數(shù)據(jù)庫存儲空間,提高查詢速度。
– 事務(wù):使用事務(wù)可以保證一組操作的原子性和一致性,提高查詢效率。
3.2 數(shù)據(jù)庫安全
數(shù)據(jù)庫安全是軟件開發(fā)中非常重要的一個方面,需要保證數(shù)據(jù)庫的機(jī)密性、完整性和可用性。以下是一些常見的數(shù)據(jù)庫安全問題和解決方法:
– SQL注入:通過輸入特定的惡意代碼,使得程序執(zhí)行SQL語句變成攻擊者想要的任意SQL語句,一般使用參數(shù)化查詢可以避免SQL注入。
– 數(shù)據(jù)泄露:數(shù)據(jù)庫備份、恢復(fù)和移動等操作容易引起數(shù)據(jù)泄露,可以使用加密算法對敏感數(shù)據(jù)進(jìn)行加密。
– 受損數(shù)據(jù):可能發(fā)生的原因包括硬件故障、軟件故障和人為破壞等,可以使用事務(wù)和備份恢復(fù)來保證數(shù)據(jù)的一致性和完整性。
– 訪問控制:為用戶設(shè)置特定的權(quán)限,并限制數(shù)據(jù)庫訪問的IP地址和端口等,保證只有授權(quán)的用戶能夠訪問數(shù)據(jù)庫。
結(jié)語
通過本文的介紹,我們可以初步了解數(shù)據(jù)庫的操作流程和常見問題的解決方法,以及一些進(jìn)階操作技巧和安全方面的考慮。為了更好地掌握ADO數(shù)據(jù)庫的使用,還需要不斷學(xué)習(xí)和實(shí)踐,將理論融入實(shí)踐,提高對數(shù)據(jù)庫操作的熟練度和技能水平。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220用Visual C++開發(fā)數(shù)據(jù)庫應(yīng)用程序(3)
6、使用ADO
6.1 概述
ADO是ActiveX數(shù)據(jù)對象(ActiveX Data Object),這是Microsoft開發(fā)數(shù)據(jù)庫應(yīng)用程序的面向?qū)ο蟮男陆涌?。ADO訪問數(shù)據(jù)庫是通過訪問OLE DB數(shù)據(jù)提供程序來進(jìn)行的,提供了一種對OLE DB數(shù)據(jù)提供程序的簡單高層訪問接口。
ADO技術(shù)簡化了OLE DB的操作,OLE DB的程序中使用了大量的COM接口,而ADO封裝了這些接口。所以,ADO是一種高層的訪問技術(shù)。
ADO技術(shù)基于通用對象模型(COM),它提供了多種語言的訪問技術(shù),同時(shí),由于ADO提供了訪問自動化接口,所以,ADO可以用描述的腳本語言來訪問VBScript,VCScript等。
6.2 在VC中使用ADO
可以使用VC6提供的ActiveX控件開發(fā)應(yīng)用程序,還可以用ADO對象開發(fā)應(yīng)用程序。使用ADO對象開發(fā)應(yīng)用程序可以使程序開發(fā)者更容易地控制對數(shù)據(jù)庫的訪問,從而產(chǎn)生符合用戶需求的數(shù)據(jù)庫訪問程序。
使用ADO對象開發(fā)應(yīng)用程序也類似其它技逗汪術(shù),需產(chǎn)生與數(shù)據(jù)源的連接,創(chuàng)建記錄等步驟,但與其它訪問技術(shù)不同的是,ADO技術(shù)對對象之間的層次和順序關(guān)系要求不是太嚴(yán)格。在程序開發(fā)過程中,不必選建立連接,然后才能產(chǎn)生記錄對象等。可以在使用記錄的地方直接使用記錄對象,在創(chuàng)建記錄對象的同時(shí),程序自動建立了與數(shù)據(jù)源的連接。這種模型有力的簡化了程序設(shè)計(jì),增強(qiáng)了程序的靈活性。下面講述使用ADO對象進(jìn)行程序設(shè)計(jì)的方法。
6.21 引入ADO庫文件
使用ADO前必須在工程的stdafx.h文件里用直接引入符號#import引入ADO庫文件,以使編譯器能正確編譯。代碼如下所示:
#define INITGUID
#import “c:program filescommon filessystemadomsado15.dll” no_namespace rename(“EOF”,”EndOfFile”)
#include “icrsint.h”
這行語句聲明在工程中使用ADO,但不使用ADO的名字空間,并且為了避免沖突,將EOF改名為EndOfFile。
6.22 初始化ADO環(huán)境
在使用ADO對象之前必須先初始山姿仔化COM環(huán)境。初始化COM環(huán)境可以用以下代碼完成:
在初始化COM環(huán)境后,就可以使用ADO對象了,如果在程序前面沒有添加此代碼,將會產(chǎn)生COM錯誤。
在使用完ADO對象后,需要用以下的代碼將初始化的對象釋放:
此函數(shù)清除了為ADO對象準(zhǔn)備的COM環(huán)境。
6.23 接口簡介
ADO庫包含三個基本接口:
__ConnectionPtr接口、
__CommandPtr接口、
__RecordsetPtr接口,
__ConnectionPtr接口返回一個記錄集或一個空指針。通常使用它來創(chuàng)建一個數(shù)據(jù)連接或執(zhí)行一條不返回任何結(jié)果的SQL語句,如一個存儲過程。用__ConnectionPtr接口返回一個記錄集不是一個好的使用方法。通常同CDatabase一樣,使用它創(chuàng)建一個數(shù)據(jù)連接,然后使用其它對象執(zhí)行數(shù)據(jù)輸入輸出操作。
__CommandPtr接口返回一個記錄集。它提供了一種簡單的方法來執(zhí)行返回記錄集的存儲過程和SQL語句。在使用__CommandPtr接口時(shí),可以利用全局__ConnectionPtr接口,也可以在__CommandPtr接口里直接使用連接串。如果只執(zhí)行一次或幾次數(shù)據(jù)訪問操作,后者是比較好的選擇。但如果要頻繁訪問數(shù)據(jù)庫,并要返回很多記錄集,那么,應(yīng)該使用全局__ConnectionPtr接口創(chuàng)建一個數(shù)據(jù)連接,然后使用__CommandPtr接口執(zhí)行存儲過程和SQL語句。
__RecordsetPtr是一個記錄集對象。與以上兩種對象相比,它對記錄集提供了更多的控制功能,如記錄鎖定,游標(biāo)控制等。同__CommandPtr接口一樣,它不一定要使用一個已經(jīng)創(chuàng)建的數(shù)據(jù)連接,可以用一個連接串代替連接指針賦給__RecordsetPtr的connection成員變量,讓它自己創(chuàng)建數(shù)據(jù)連接。如果要使用多個記錄集,更好的方法是同Command對象一樣使用已經(jīng)創(chuàng)建了數(shù)據(jù)連接的全局—ConnectionPtr接口,然后使用__Recordse7tPtr執(zhí)行存儲過程和SQL語句。
6、24 使用冊缺ADO訪問數(shù)據(jù)庫
__ConnectionPtr是一個連接接口,首先創(chuàng)建一個__ConnectionPtr接口實(shí)例,接著指向并打開一個ODBC數(shù)據(jù)源或OLE DB數(shù)據(jù)提供者(Provider)。以下代碼分別創(chuàng)建一個基于DSN和非DSN的數(shù)據(jù)連接。
//使用__ConnectionPtr(基于DSN)
__ConnectionPtr MyDb;
MyDb.CreateInstance(__uuidof(Connection));
MyDb-〉Open(“DSN=samp;UID=admin;PWD=admin”,””,””,-1);
//使用—ConnectionPtr (基于非DSN)
__ConnectionPtr MyDb;
MyDb.CreateInstance(__uuidof(Connection));
MyDb.Open(“Provider=SQLOLEDB;SERVER=server;DATABASE=samp;UID=admin;PWD=admin”,””,””,-1);
//使用__RecordsetPtr執(zhí)行SQL語句
__RecordsetPtr MySet;
MySet.CreateInstance(__uuidof(Recordset));
MySet-〉Open(“SELECT *_ FROM some__table”,
MyDb.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
現(xiàn)在我們已經(jīng)有了一個數(shù)據(jù)連接和一個記錄集,接下來就可以使用數(shù)據(jù)了。從以下代碼可以看到,使用ADO的__RecordsetPtr接口,就不需要像DAO那樣頻繁地使用大而復(fù)雜的數(shù)據(jù)結(jié)構(gòu)VARIANT,并強(qiáng)制轉(zhuǎn)換各種數(shù)據(jù)類型了,這也是ADO的優(yōu)點(diǎn)之一。假定程序有一個名稱為m__List的ListBox控件,下面代碼我們用__RecordsetPtr接口獲取記錄集數(shù)據(jù)并填充這個ListBox控件:
__variant__t Holder
try{while(!MySet-〉adoEOF)
{ Holder = MySet-〉GetCollect(“FIELD__1”);
if(Holder.vt!=VT__NULL)
m__List.AddString((char_)__bstr__t(Holder));
MySet-〉MoveNext();} }
catch(__com__error _ e)
{ CString Error = e-〉ErrorMessage();
AfxMessageBox(e-〉ErrorMessage());
} catch(…)
{ MessageBox(“ADO發(fā)生錯誤!”);}
必須始終在代碼中用try和catch來捕獲ADO錯誤,否則ADO錯誤會使你的應(yīng)用程序崩潰。當(dāng)ADO發(fā)生運(yùn)行錯誤時(shí)(如數(shù)據(jù)庫不存在),OLE DB數(shù)據(jù)提供者將自動創(chuàng)建一個__com__error對象,并將有關(guān)錯誤信息填充到這個對象的成員變量。
6.25 類型轉(zhuǎn)換
由于COM對象是跨平臺的,它使用了一種通用的方法來處理各種類型的數(shù)據(jù),因此CString 類和COM對象是不兼容的,我們需要一組API來轉(zhuǎn)換COM對象和C++類型的數(shù)據(jù)。__vatiant__t和__bstr__t就是這樣兩種對象。它們提供了通用的方法轉(zhuǎn)換COM對象和C++類型的數(shù)據(jù)。
6.3 在VB中使用ADO
ADO 提供執(zhí)行以下操作的方式:
1、連接到數(shù)據(jù)源。同時(shí),可確定對數(shù)據(jù)源的所有更改是否已成功或沒有發(fā)生。
2、指定訪問數(shù)據(jù)源的命令,同時(shí)可帶變量參數(shù),或優(yōu)化執(zhí)行。
3、執(zhí)行命令。
3、如果這個命令使數(shù)據(jù)按表中的行的形式返回,則將這些行存儲在易于檢查、操作或更改的緩存中。
4、適當(dāng)情況下,可使用緩存行的更改內(nèi)容來更新數(shù)據(jù)源。
5、提供常規(guī)方法檢測錯誤(通常由建立連接或執(zhí)行命令造成)。
在典型情況下,需要在編程模型中采用所有這些步驟。但是,由于 ADO 有很強(qiáng)的靈活性,所以最后只需執(zhí)行部分模塊就能做一些有用的工作。
以下元素是 ADO 編程模型中的關(guān)鍵部分:
6.31 連接
通過“連接”可從應(yīng)用程序訪問數(shù)據(jù)源,連接是交換數(shù)據(jù)所必需的環(huán)境。對象模型使用 Connection 對象使連接概念得以具體化。
“事務(wù)”用于界定在連接過程中發(fā)生的一系列數(shù)據(jù)訪問操作的開始和結(jié)束。ADO 可明確事務(wù)中的操作造成的對數(shù)據(jù)源的更改或者成功發(fā)生,或者根本沒有發(fā)生。如果取消事務(wù)或它的一個操作失敗,則最終的結(jié)果將仿佛是事務(wù)中的操作均未發(fā)生,數(shù)據(jù)源將會保持事務(wù)開始以前的狀態(tài)。對象模型無法清楚地體現(xiàn)出事務(wù)的概念,而是用一組 Connection 對象方法來表示。ADO 從 OLE DB 提供者訪問數(shù)據(jù)和服務(wù)。Connection 對象用于指定專門的提供者和任意參數(shù)。
6.32 命令
通過已建立的連接發(fā)出的“命令”可以某種方式來操作數(shù)據(jù)源。一般情況下,命令可以在數(shù)據(jù)源中添加、刪除或更新數(shù)據(jù),或者在表中以行的格式檢索數(shù)據(jù)。對象模型用 Command 對象來體現(xiàn)命令概念。使用 Command 對象可使 ADO 優(yōu)化命令的執(zhí)行。
參數(shù)
通常,命令需要的變量部分即“參數(shù)”可以在命令發(fā)布之前進(jìn)行更改。例如,可重復(fù)發(fā)出相同的數(shù)據(jù)檢索命令,但每一次均可更改指定的檢索信息。
參數(shù)對與函數(shù)活動相同的可執(zhí)行命令非常有用,這樣就可知道命令是做什么的,但不必知道它如何工作。例如,可發(fā)出一項(xiàng)銀行過戶命令,從一方借出貸給另一方。可將要過戶的款額設(shè)置為參數(shù)。
對象模型用 Parameter 對象來體現(xiàn)參數(shù)概念。
6.33 記錄集
如果命令是在表中按信息行返回?cái)?shù)據(jù)的查詢(行返回查詢),則這些行將會存儲在本地。
對象模型將該存儲體現(xiàn)為 Recordset 對象。但是,不存在僅代表單獨(dú)一個 Recordset 行的對象。
記錄集是在行中檢查和修改數(shù)據(jù)最主要的方法。
6.34 字段
一個記錄集行包含一個或多個“字段”。如果將記錄集看作二維網(wǎng)格,字段將排列構(gòu)成“列”。每一字段(列)都分別包含有名稱、數(shù)據(jù)類型和值的屬性,正是在該值中包含了來自數(shù)據(jù)源的真實(shí)數(shù)據(jù)。
對象模型以 Field 對象體現(xiàn)字段。
要修改數(shù)據(jù)源中的數(shù)據(jù),可在記錄集行中修改 Field 對象的值,對記錄集的更改最終被傳送給數(shù)據(jù)源。作為選項(xiàng),Connection 對象的事務(wù)管理方法能夠可靠地保證更改要么全部成功,要么全部失敗。
6.35 錯誤
錯誤隨時(shí)可在應(yīng)用程序中發(fā)生,通常是由于無法建立連接、執(zhí)行命令或?qū)δ承顟B(tài)(例如,試圖使用沒有初始化的記錄集)的對象進(jìn)行操作。
對象模型以 Error 對象體現(xiàn)錯誤。
任意給定的錯誤都會產(chǎn)生一個或多個 Error 對象,隨后產(chǎn)生的錯誤將會放棄先前的 Error 對象組。
6.36 屬性
每個 ADO 對象都有一組唯一的“屬性”來描述或控制對象的行為。
屬性有內(nèi)置和動態(tài)兩種類型。內(nèi)置屬性是 ADO 對象的一部分并且隨時(shí)可用。動態(tài)屬性則由特別的數(shù)據(jù)提供者添加到 ADO 對象的屬性中,僅在提供者被使用時(shí)才能存在。
對象模型以 Property 對象體現(xiàn)屬性。
6.37
ADO 提供“”,這是一種可方便地包含其他特殊類型對象的對象類型。使用方法可按名稱(文本字符串)或序號(整型數(shù))對中的對象進(jìn)行檢索。
ADO 提供四種類型的:
Connection 對象具有 Errors ,包含為響應(yīng)與數(shù)據(jù)源有關(guān)的單一錯誤而創(chuàng)建的所有 Error 對象。
Command 對象具有 Parameters ,包含應(yīng)用于 Command 對象的所有 Parameter 對象。
Recordset 對象具有 Fields ,包含所有定義 Recordset 對象列的 Field 對象。
此外,Connection、Command、Recordset 和 Field 對象都具有 Properties 。它包含所有屬于各個包含對象的 Property 對象。
ADO 對象擁有可在其上使用的諸如“整型”、“字符型”或“布爾型”這樣的普通數(shù)據(jù)類型來設(shè)置或檢索值的屬性。然而,有必要將某些屬性看成是數(shù)據(jù)類型“COLLECTION OBJECT”的返回值。相應(yīng)的,對象具有存儲和檢索適合該的其他對象的方法。
6.38 事件
ADO 2.0 支持事件,事件是對某些操作將要或已經(jīng)發(fā)生的通知。
有兩類事件:ConnectionEvent 和 RecordsetEvent。Connection 對象產(chǎn)生 ConnectionEvent 事件,而 Recordset 對象則產(chǎn)生 RecordsetEvent 事件。
事件由事件處理程序例程處理,該例程在某個操作開始之前或結(jié)束之后被調(diào)用。
某些事件是成對出現(xiàn)的。開始操作前調(diào)用的事件名格式為 WillEvent(Will 事件),而操作結(jié)束后調(diào)用的事件名格式為 EventComplete(Complete 事件)。其余的不成對事件只在操作結(jié)束后發(fā)生。(其名稱沒有任何固定模式。)事件處理程序由狀態(tài)參數(shù)控制。附加信息由錯誤和對象參數(shù)提供。
可以請求事件處理程序不接受之一次通知以后的任何通知。例如,可以選擇只接收 Will 事件或 Complete 事件。
下面的代碼顯示了一個使用ADO的例子。
首先加入Microsoft ActiveX Data Object 2.0 Library引用。
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open “PROVIDER=MSDASQL;DSN=TestDatabase”, “sa”, “”, -1
Dim i As Long
Dim id As Long
Dim value As Single
Dim rst As New Recordset
Set rst = New Recordset
rst.Open “select * from 模擬量變化歷史表”, db, adOpenDynamic, adLockOptimistic
rst.MoveFirst
For i = 0 To rst.RecordCount – 1
id = rst.Fields(“ID”)
value=rst.Fields(“VALUE”)
rst.MoveNext
Next i
rst.Close
Set rst = Nothing
db.Close
6.4總結(jié)
ADO技術(shù)是訪問數(shù)據(jù)庫的新技術(shù),具有易于使用、訪問靈活、應(yīng)用廣泛的特點(diǎn)。用ADO訪問數(shù)據(jù)源的特點(diǎn)可總結(jié)如下:
易于使用
這是ADO技術(shù)的最重要的一個特征。由于ADO是高層應(yīng)用,所以相對于OLE DB或者ODBC來說,它具有面向?qū)ο蟮奶匦?。同時(shí),在ADO的對象結(jié)構(gòu)中,其對象之間的層次關(guān)系并不明顯。相對于DAO等訪問技術(shù)來講,又不必關(guān)心對象的構(gòu)造順序和構(gòu)造層次。對于要用的對象,不必選建立連接、會話等對象,只需直接構(gòu)造即可,方便了應(yīng)用程序的編制。
高速訪問數(shù)據(jù)源
由于ADO技術(shù)基于OLE DB,所以,它也繼承了OLE DB訪問數(shù)據(jù)庫的高速性。
可以訪問不同數(shù)據(jù)源
ADO技術(shù)可以訪問包括關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫的所有文件系統(tǒng)。此特點(diǎn)使應(yīng)用程序有很多的靈活性和通用性。
可以用于Microsoft ActiveX頁
ADO技術(shù)可以以ActiveX控件的形式出現(xiàn),所以,可以被用于Microsoft ActiveX頁,此特征可簡化WEB頁的編程。
程序占用內(nèi)存少
由于ADO是基于組件對象模型(COM)的訪問技術(shù),所以,用ADO產(chǎn)生的應(yīng)用程序占用內(nèi)存少。
7、總結(jié)
要在訪問數(shù)據(jù)時(shí)判斷出應(yīng)該使用哪一種技術(shù),這并不容易??赡苄枰脤?shí)用程序來處理多個數(shù)據(jù)庫類型;部分?jǐn)?shù)據(jù)可能出現(xiàn)在本地硬盤驅(qū)動器上,部分在網(wǎng)絡(luò)上,還有一部分在主機(jī)上。甚至客戶安裝在設(shè)備上的產(chǎn)品也會使這種選擇更加困難。例如,你所期待的ODBC支持級別也許依賴于所安裝的Microsoft Office的版本,因?yàn)檫@個產(chǎn)品不提供ODBC支持。你還會發(fā)現(xiàn),ADO類提供的對象和方法要比ODBC類多。ADO可以提供程序中絕對必須具有的一些特性棗例如,你會發(fā)現(xiàn)OLE-DB和ADO兩者都支持DFX_Currency,但在ODBC中沒有對應(yīng)的功能,但你要想掌握它們也必須付出一定的努力。
選擇OLE-DB或ODBC時(shí),有幾條一般的規(guī)則。因?yàn)锳DO實(shí)際上只是OLE-DB的包裝,所以這些規(guī)則也適用于它。下面提供一些基本的原則,可以用來幫助你決定選擇OLE-DB還是ODBC。
非OLE環(huán)境 如果要訪問支持ODBC的數(shù)據(jù)庫,而該數(shù)據(jù)庫又在不支持OLE的服務(wù)器上,那么ODBC是更好的選擇。
非SQL環(huán)境 ODBC在處理SQL時(shí)非常出眾。處理非SQL數(shù)據(jù)庫時(shí),OLE-DB則具有非常明顯的優(yōu)勢。
OLE環(huán)境 對支持OLE的服務(wù)器來說,選擇OLE-DB還是ODBC也許是希望各半。如果有ODBC驅(qū)動程序可供利用,那么使用ODBC是一個好主意;否則,就只有選擇OLE-DB了。
所需的互操作性 如果需要可互操作的數(shù)據(jù)庫部件,那么只有選擇OLE-DB。
labview中怎么用ado創(chuàng)建數(shù)據(jù)庫
eW;中利用AD0接口訪問數(shù)據(jù)庫的方法;黎洪生;李超;劉俊剛;(武漢理工大學(xué)西院信息學(xué)院;450070);摘要較對LabView中的幾種數(shù)據(jù)庫訪問方法作了;關(guān)鍵詞:LabVjew數(shù)據(jù)庫ADO;SQL;引言;LabView(1aboratoryVinual;engineering;利用其他語言如visualc++編寫DLL程序訪;利用中間文件存取數(shù)據(jù),先將數(shù)據(jù)
eW
中利用AD0接口訪問數(shù)據(jù)庫的方法
黎洪生
李超
劉俊剛
(武漢理工大學(xué)西院信息學(xué)院
450070)
摘要較對LabView中的幾種數(shù)據(jù)庫訪問方法作了一些比較。詳細(xì)說明了利用ADO接口訪問數(shù)據(jù)庫的方法,并利用衫蔽該方法實(shí)現(xiàn)了對實(shí)時(shí)數(shù)據(jù)庫的訪問。
關(guān)鍵詞:LabVjew數(shù)據(jù)庫ADO
SQL
引言
LabView(1aboratoryVinualinstnlment
engineering
利用其他語言如visualc++編寫DLL程序訪問數(shù)據(jù)庫,利用LabView所帶的DLL接口訪問該程序,可以實(shí)現(xiàn)間接的訪問數(shù)據(jù)庫。用這種方法實(shí)現(xiàn)需要的工作量比較大。
利用中間文件存取數(shù)據(jù),先將數(shù)據(jù)存頃跡入文件之中,在一定的時(shí)刻或者是需要的時(shí)候再將數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫之中。這種方法的實(shí)現(xiàn)比較簡單,但是需要單獨(dú)的軟件對數(shù)據(jù)文件導(dǎo)入導(dǎo)出,不能對數(shù)據(jù)進(jìn)行實(shí)時(shí)的存取。
這幾種方法雖然可以實(shí)現(xiàn)對數(shù)據(jù)庫的訪問,但各有缺點(diǎn),不能滿足監(jiān)控系統(tǒng)中對實(shí)時(shí)數(shù)據(jù)庫訪問的要求。本
文提出的利用ADO接口訪問數(shù)據(jù)庫的方法則可以較好的
workbench實(shí)驗(yàn)室虛擬儀器工程平臺)是美國NI(NationalInstmments)公司標(biāo)志性的虛擬儀器產(chǎn)品,是一種或乎州基于圖形化語言的開發(fā)、調(diào)試和運(yùn)行的集成化環(huán)境。它主要用于來開發(fā)數(shù)據(jù)采集、儀器控制、測試測量及過程監(jiān)測和控制等領(lǐng)域的應(yīng)用程序。它使用圖形語言,即各種圖表,圖形符號、連線等編程,界面非?;掠^形象,相對于傳統(tǒng)的編程方式而言,它不僅簡單易學(xué)而且執(zhí)行的效率也很高。LabView中自帶豐富的函數(shù)庫,包括數(shù)據(jù)采集、數(shù)據(jù)分析、網(wǎng)絡(luò)、Activex等集成庫,提供了DLL庫和cIN節(jié)點(diǎn)和大量的儀器驅(qū)動器、網(wǎng)絡(luò)VIs與其他外部程序或外部
設(shè)備進(jìn)行連接。它所提供的自動化Activex、DDE、SQL
解決這個問題。
等功能可以很方便的與其他Windows應(yīng)用程序一起集成用戶的應(yīng)用程序。
基于LabView的上述特點(diǎn)和功能,在開發(fā)某監(jiān)控系統(tǒng)的工程中筆者選擇了LabView作為開發(fā)工具。
利用ADO接口訪問數(shù)據(jù)庫簡介
AD0(ActiveX
Data
0bjects)是Microsoft為最新數(shù)據(jù)
訪問接口OLEDB設(shè)計(jì)的應(yīng)用層接口,它為一致的數(shù)據(jù)
訪問接口提供了良好的擴(kuò)展性,不再局限于特定的數(shù)據(jù)
源。這種特征使此技術(shù)具有非常靈活的訪問特性
關(guān)于ado數(shù)據(jù)庫簡介的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都網(wǎng)站建設(shè)選創(chuàng)新互聯(lián)(?:028-86922220),專業(yè)從事成都網(wǎng)站制作設(shè)計(jì),高端小程序APP定制開發(fā),成都網(wǎng)絡(luò)營銷推廣等一站式服務(wù)。
文章名稱:深入了解ADO數(shù)據(jù)庫:從入門到精通(ado數(shù)據(jù)庫簡介)
網(wǎng)頁鏈接:http://fisionsoft.com.cn/article/coijehi.html


咨詢
建站咨詢
