西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)Delphi → Delphi通過ADO讀寫數(shù)據(jù)庫

Delphi通過ADO讀寫數(shù)據(jù)庫

前往專題相關(guān)軟件相關(guān)文章發(fā)表評論 來源:百度搜索時(shí)間:2012/8/28 17:50:06字體大小:A-A+

作者:西西點(diǎn)擊:4207次評論:0次標(biāo)簽: Delphi 數(shù)據(jù)庫

Borland Delphi8.0光盤版
  • 類型:編程工具大小:83.1M語言:中文 評分:4.0
  • 標(biāo)簽:
立即下載
2 頁 一、 TADOConnection組件

一、 TADOConnection組件
該組件用于建立數(shù)據(jù)庫的連接。ADO的數(shù)據(jù)源組件和命令組件可以通過該組件運(yùn)行命令及數(shù)據(jù)庫中提取數(shù)據(jù)等。
該組件用于建立數(shù)據(jù)庫的連接,該連接可被多個(gè)數(shù)據(jù)集所共享,但是并不是應(yīng)用程序中必須的,因?yàn)锳DO數(shù)據(jù)集及命令組件通過設(shè)置其ConnectionString屬性,可以直接連接到數(shù)據(jù)庫。但是如果多個(gè)數(shù)據(jù)集使用相同的數(shù)據(jù)庫連接時(shí),則使用TADOConnection就有一定的優(yōu)勢,因?yàn)椴槐貫槊總(gè)數(shù)據(jù)集都單獨(dú)建立數(shù)據(jù)庫的連接,同時(shí)也減少了資源的消耗,并且可以建立跨越多個(gè)數(shù)據(jù)集的事務(wù)。一個(gè)事務(wù)(transaction)是數(shù)據(jù)庫操作的一個(gè)階段,用戶對數(shù)據(jù)庫的修改都保存在本地計(jì)算機(jī)的內(nèi)存中,只有提交一個(gè)事務(wù)后,才能將修改的內(nèi)容提交到數(shù)據(jù)庫中。如果選擇了回滾事務(wù),則所有的修改將被取消,而不會提交到數(shù)據(jù)庫中。

? TADOConnection組件提供如下功能:
v 控件數(shù)據(jù)庫的連接
v 控制服務(wù)器的注冊
v 管理事務(wù)
v 為關(guān)聯(lián)的數(shù)據(jù)集提供數(shù)據(jù)庫連接
v 將SQL命令發(fā)送到數(shù)據(jù)庫中
v 獲得數(shù)據(jù)庫的原數(shù)據(jù)(metadata)

 TADOConnection的常用屬性


1) Attributes
    此屬性用于設(shè)置連接的數(shù)據(jù)庫的自動處理的行為,它是TxactAttributes
類型的集合,包括兩個(gè)集合元素:
I. XaCommitRetaining:提交一個(gè)事務(wù)后自動開始一個(gè)新的事務(wù)。
II. XaAbortRetaining: 回退一個(gè)事務(wù)的同時(shí)將開始一個(gè)新的事務(wù)。
2) CommandTimeout
    連接超時(shí)屬性,用于設(shè)置一個(gè)命令執(zhí)行時(shí)所能等待的最大時(shí)間值。以秒為計(jì)量單位。缺省值為30秒,即連接命令等待了30秒之后還沒有被執(zhí)行,系統(tǒng)就放棄這個(gè)命令。
3) Connected
    標(biāo)識和數(shù)據(jù)庫的連接是否處于激活狀態(tài)。
用戶可以查詢Connected屬性的值來判斷數(shù)據(jù)庫的連接狀態(tài)。如果該屬性為true,則表明數(shù)據(jù)庫處于連接狀態(tài);為false,則當(dāng)前數(shù)據(jù)庫連接關(guān)閉。
4) ConnectionString
    連字符串用于指定數(shù)據(jù)庫的連接信息。連字符串的標(biāo)準(zhǔn)調(diào)用方為:ADOConnection1.ConnectionString:='Provider=ProviderRet;Remote Server=ServerRet';
其中,連接串支持的常用參數(shù)如下:
數(shù)據(jù)庫連接參數(shù)及說明
         參數(shù) 說明
Provider 數(shù)據(jù)提供者名稱,例如MSDASQL.1
Password 登錄數(shù)據(jù)庫的口令
         參數(shù) 說明
Persist Security  支持安全登錄
User ID 登錄數(shù)據(jù)庫用戶
    DataSource 數(shù)據(jù)源名稱、數(shù)據(jù)源的設(shè)置需要額外的操作
設(shè)置成功之后,用戶就可以將屬性Connected設(shè)置為True,如果沒有任何提示信息,說明數(shù)據(jù)庫已經(jīng)成功連接,此時(shí),屬性DefaultPatabase就被賦值為連接所指定的數(shù)據(jù)庫的路徑。
 5) ConnectOptions
    指定數(shù)據(jù)庫連接是按照同步方式還是異步方式。類型Tconnectoption包含兩個(gè)值:
v coConnectUnspecified:數(shù)據(jù)庫連接采用同步方式連接。
v coAsyncConnect:異步方式連接數(shù)據(jù)庫。當(dāng)服務(wù)器負(fù)載很重的時(shí)候,這種連接方式很有用。引用這種連接方式,在第一次建立連接的時(shí)候,應(yīng)用程序不能獲得全部的數(shù)據(jù)。
 6) CursorLocation
     指定數(shù)據(jù)庫指針是指向客戶端還是服務(wù)器端。類型TcursorLocation包含兩個(gè)值:
v cluseServer:使用服務(wù)器端的數(shù)據(jù)庫指針,適用于數(shù)據(jù)量大的數(shù)據(jù)集。
v cluseClient:使用客戶端的數(shù)據(jù)指針的時(shí)候,數(shù)據(jù)將被下載到本地計(jì)算機(jī)上,并在本地進(jìn)行操作。
7) DefaultDatabase
    表明數(shù)據(jù)源成功連接后,這是由數(shù)據(jù)源自動賦值的。
8) IsoLationLevel
指定不同事務(wù)之間的相互獨(dú)立的級別,事務(wù)實(shí)際上是對數(shù)據(jù)庫的一系列操作的集合。事務(wù)具有整體性,如果事務(wù)中的某一個(gè)步驟不能正確執(zhí)行,則整個(gè)事務(wù)都不會執(zhí)行。由于數(shù)據(jù)庫服務(wù)器可以同時(shí)支持多個(gè)連接,來自不同連接的事務(wù)有可能在同一時(shí)刻對同一個(gè)數(shù)據(jù)進(jìn)行操作,這就有可能造成數(shù)據(jù)不一致性。為防止這種情況出現(xiàn),ADO引入了事務(wù)獨(dú)立級來確定不同事務(wù)之間的相互關(guān)系。設(shè)定事務(wù)獨(dú)立級之后并調(diào)用BeginTrans方法后,新的事務(wù)獨(dú)立級別將生效。
TISolationLevel共包含9種常量值:如下:
TISolationLevel常量及說明
常量參數(shù) 說明
ilUnspecified 使用默認(rèn)的獨(dú)立級別,沒有其它的獨(dú)立級別
ilChaos 來自更高獨(dú)立級別的事務(wù)對數(shù)據(jù)的改變不能被當(dāng)前的事務(wù)覆蓋
ilReadUncommitled 當(dāng)前事務(wù)可以讀取其他事務(wù)未提交的數(shù)據(jù)
ilBrowse 當(dāng)前事務(wù)可以讀取其他事務(wù)未提交的數(shù)據(jù)
ilcursorStability 事務(wù)提交后數(shù)據(jù)才能被讀取
ilReadCommitled 事務(wù)提交后數(shù)據(jù)才能被讀取
ilRepeatableRead 不能讀取其它事務(wù)的數(shù)據(jù),執(zhí)行Requery操作可以獲得這些數(shù)據(jù)
ilSerializable 從其他事務(wù)中獲取事務(wù)的獨(dú)立級別
ilIsolated 從其他事務(wù)中獲取事務(wù)的獨(dú)立級別

    這些常量的定義在Microsoft Data Access SDK中有詳盡的說明,需要進(jìn)一步了解可以查詢微軟的SDK文檔。
9) KeepConnection
    指定如果在沒有打開數(shù)據(jù)集的情況下是否仍然保持?jǐn)?shù)據(jù)的連接。
    瀕繁地打開和關(guān)閉數(shù)據(jù)庫的操作將會影響系統(tǒng)的性能,特別在網(wǎng)絡(luò)上,會在一定程度上增加網(wǎng)絡(luò)的負(fù)載。這個(gè)屬性設(shè)置數(shù)據(jù)源始終處于連接狀態(tài),可以顯著提高程序的性能。
10) LoginPrompt
    指定在每次建立連接時(shí)是否彈出登錄對話框提示用戶登錄。如果設(shè)為False,則必須在ConnectionString中指定登錄數(shù)據(jù)庫的用戶和密碼。
11) Mode
 指定連接對數(shù)據(jù)庫的操作權(quán)限,這種連接模式的值如下:
連接模式參數(shù)及說明
參數(shù) 說明
cmUnknown 未指定數(shù)據(jù)庫操作權(quán)限或無法確定
cmRead 對數(shù)據(jù)庫只能讀操作
cmWrite 對數(shù)據(jù)庫只能寫操作
cmReadWrite 對數(shù)據(jù)庫可讀寫操作
cmShareDenyRead 禁止其他用戶對數(shù)據(jù)庫讀操作
cmShareDenyWrite 禁止其他用戶對數(shù)據(jù)庫寫操作
cmShareExclusive 禁止其他用戶對打開數(shù)據(jù)連接
cmShareDengNone 禁止其他用戶對數(shù)據(jù)庫任何操作

 ADOConnection的主要方法:
1) BeginTrans
    開始啟動一個(gè)新的事務(wù),必須保證數(shù)據(jù)連接處于激活狀態(tài)。
2) Cancel
    關(guān)閉于數(shù)據(jù)庫的連接。
3) CommitTrans
    向數(shù)據(jù)庫提交一個(gè)事務(wù)。提交成功后,再事務(wù)中對數(shù)據(jù)庫所作的修改則寫入數(shù)據(jù)庫中,同時(shí)一個(gè)事務(wù)也結(jié)束。
4) Execute(constCommandText:Widestring;VarRecordsAffected;Executeoptions:TexcuteOptions=[eoExecuteNoRecords]);
執(zhí)行一個(gè)CommandText類型的SQL命令,其中,CommandText是指定的SQL命令;ReardsAffected指定該命令設(shè)計(jì)的記錄數(shù)目;ExecuteOptions指定命令特征如下:
ExecuteOption的值及說明
參數(shù) 說明
eoAsyncExecute 異步執(zhí)行命令
eoAsyncFetch 給定了Cache屬性的值后,在異步地去數(shù)據(jù)
eoAsyncFetchNonBlocking 非阻塞式線程執(zhí)行
eoExecuteNoRecords 沒有返回記錄
5) GetProcedureNames(List:Tstring);
    獲取數(shù)據(jù)庫服務(wù)器上的存儲過程名稱,獲取的存儲過程名稱在List參數(shù)中。
6) GetTableNames(List:Tstring;SystemTables:Boolean=False);
    獲取數(shù)據(jù)庫中的數(shù)據(jù)表,獲取的表名存放在List參數(shù)中SystemTables參數(shù)指示是否獲取數(shù)據(jù)庫系統(tǒng)表的名稱。數(shù)據(jù)庫系統(tǒng)表是指在數(shù)據(jù)庫中關(guān)于數(shù)據(jù)庫數(shù)據(jù)類型定義和用戶信息的數(shù)據(jù)表,這種系統(tǒng)表是數(shù)據(jù)庫本身自動生成的。
7) Open(const UserID:widestring;constPassword:widestring)                           
    打開一個(gè)連接,參數(shù)UserID是數(shù)據(jù)庫用戶的用戶名。Password是用戶登錄數(shù)據(jù)庫的密碼。
8) RollbackTrams
    撤回一個(gè)沒有全部執(zhí)行的事務(wù)。事務(wù)撤回之后,事務(wù)中所作的任何修改都不會寫入數(shù)據(jù)庫。

 ADOConnection的主要事件
事件 說明
AfterConnect  發(fā)生在一個(gè)連接建立之后
AfterDisconnect 發(fā)生在斷開連接之后
BeforeConnect 發(fā)生在連接建立前
BeforeDisconnect 發(fā)生在斷開連接前
OnBeginTranscomplete 發(fā)生在開始一個(gè)事務(wù)時(shí)
OnCommitTranscomplete 發(fā)生在提交事務(wù)成功時(shí)
OnConnectComplete 發(fā)生在連接完成時(shí)
OnDisconnect 發(fā)生在斷開時(shí)
OnExecuteComplete 發(fā)生在一個(gè)命令執(zhí)行后
OnInfoMessage 發(fā)生在收到數(shù)據(jù)庫的消息
OnLogin 發(fā)生在用戶登錄數(shù)據(jù)庫的時(shí)候
OnRollbackTransComplite 發(fā)生在一個(gè)事務(wù)撤回之后
OnWillConnect 發(fā)生在發(fā)出一個(gè)連接數(shù)據(jù)請求的時(shí)候
OnWillExecute 發(fā)生在數(shù)據(jù)庫收到一個(gè)SQL命令并將要執(zhí)行之前

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    第 1 樓 山西太原金玉網(wǎng)吧(山西大學(xué)商務(wù)學(xué)院) 網(wǎng)友 客人 發(fā)表于: 2013/11/19 20:15:07
    寫的太好了

    支持( 0 ) 蓋樓(回復(fù))

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)