使用_recordsetptr介面開發access資料庫就介紹到這裡,它可以更加靈活地運算元據庫。當然,您還可以使用_commandptr介面開發access資料庫,它提供了乙個簡單的方法來執行返回記錄集的sql語句。本文不講解_commandptr介面。
用心的讀者您可能已經發現,使用connection物件的execute方法可以完成資料庫的操作,使用recordset也可以完成同樣功能的資料庫操作。我們應該採用哪種方法呢?另外,connection物件的execute方法返回乙個記錄集,recordset的open方法也開啟乙個記錄集,二者有什麼區別呢?下面我們將進行說明。
前面已經講過,資料庫和ado的記錄集是兩個不同的概念, 是存在於不同物理位置的兩個儲存空間. 記錄集相當於是實際資料的乙份拷貝. 正因為記錄集是相對脫離資料庫而存在的, 所以才游標型別和鎖定型別這兩個問題。
在記錄集被建立以後,資料提供者負責在資料庫和記錄集之間進行偵測,記錄集的型別決定了提供者在多大程度上確保資料庫與記錄集之間的一致性,這通常是由游標型別決定的, 而同時也決定了提供者採取什麼方式來確保使用者在更新資料庫時, 本次更新的完整性, 這是由鎖型別決定的。
比方說, 乙個使用者正在對乙個記錄集做一次更新,並試圖將此更新應用到資料庫中。因為通過記錄集來更新資料是分兩步完成的, 第一步是修改記錄集的內容, 第二步才是將修改通過資料提供者更新到資料庫中, 兩步之間存在時間上的細微差別. 所以, 他可能會遇到乙個問題, 即他的第一步到第二步的操作, 是否會因為這期間同時遇到其他使用者的操作而失敗。
對資料庫的部分記錄進行鎖定解決了這個問題, 而不同型別的鎖, 解決問題的方式也不一樣。 有的在第一步開始時就鎖定資料庫, 有的在第二步開始時才鎖定資料庫。鎖定占用了資料庫資源, 而使得記錄集在對於使用者的更新操作方面更加可靠。
綜上所述, 可以得出乙個結論: 鎖是由於記錄集的存在而存在的, 沒有記錄集, 或者說沒有可供更新的記錄集,鎖就沒有存在的意義。
從效率上考慮,鎖會降低併發性, 尤其是當同時連線資料庫的使用者增多時. 不採用記錄集來更新資料庫總是更好的選擇,雖然使用起來會更麻煩一些。
選擇與資料庫聯絡得較少的記錄集總是能提高效率, 因為提供者無需做很多的偵測工作. 比如, 動態的記錄集總是實時地將資料庫的狀態反映到記錄集中, 這很有用, 但也會耗費無提供者更多的精力. 如果無需更新資料, 唯讀的記錄集是與資料庫聯絡得最少的一種, 選擇使用這種記錄集來代替其它型別在效率上通常會有很明顯的提高。
connection物件的execute方法只能得到乙個只能前移的、唯讀的記錄集。
使用recordaffected引數找出有多少條記錄受到影響。一旦execute命令執行完畢,受sql命令影響的記錄數就返回到recordaffected引數中。
connection的execute方法不支援任何鎖定型別,這就是和recordset的open方法的主要區別所在,所以用recordset的open方法將更靈活,而connection的execute方法更簡潔高效。
execute是connection物件對資料庫操作的乙個方法,你可以把它理解為執行sql語句,也就是說execute是乙個操作方法,而不是像open方法返回乙個記錄集,然後再對記錄集操作。
盡量使用sql語句進行資料庫操作。儘管採用recordset物件來更新資料是非常方便的,但是它的開銷也更大,所以如果可能的話,就要採用sql語句來更新資料。
execute返回的記錄集是唯讀的, 不可以更新, 所以也就不存在鎖。這個記錄集不具備recordset可以改變游標型別和鎖定型別的功能,它只能返回乙個只能前移的、唯讀的記錄集。
儘管很多開發人員都習慣採用「select * from 表名」的模式進行查詢,但是為了提高系統的效率,如果你只需要其中某幾個字段值的話,最好把這幾個字段直接寫出來,同時需要限定返回記錄集的範圍(通過where子句進行限定)。
就講這些吧,有點繁瑣,欠進一步整理,希望對您有所幫助。
ado資料庫開發的例子:
(1)
(2)
VC 使用ADO開發ACCESS資料庫 1
vc 使用ado開發access資料庫 本文通過例項演示如何在vc 中使用ado進行access資料庫程式設計,並對涉及到的幾個概念進行詳細解釋。第一部分 ado和adox到底是什麼,二者的作用和區別建立資料庫 第二部分 adox建立access資料庫 第三部分 ado建立access資料庫的表 第...
使用ADO訪問ACCESS
coding utf 8 file ado.py import win32com.client 匯入win32com.client adocon win32com.client.dispatch adodb.connection 建立連線物件 adocon.open podbc 連線到資料來源 ad...
VC使用ADO物件控制ACCESS資料庫的訪問
vc使用ado物件控制access資料庫的訪問 邵盛松 2009 2 28 以下 沒有進行封裝,carlos antollini已經對ado物件進行封裝,他的 可以在程式中可直接呼叫 新建乙個mfc對話方塊 1初始化 解釋 使用ado物件,就要引用使用msado15.dll中的變數和函式 在stda...