1. 程式人生 > >淺談VB程式設計中的資料庫應用

淺談VB程式設計中的資料庫應用

        在Visual Basic程式設計中,資料庫應用是一個非常重要、實用的內容,在以後的學習中我們肯定會大量使用Visual Basic程式設計開發資料庫應用程式。現在我們正學習把Visual Basic (以下簡稱VB)與SQL SERVER組合起來使用。以下是我對資料庫應用的一些認識。

1VB資料庫應用的重要性

       “資料庫”是研究資料庫結構、儲存、設計和使用的軟體技術,是進行資料管理和處理的技術,是學習計算機的所必須掌握的。 資料庫基本能與vb做到無縫連線,雖然還是初學者但是我也能感覺到資料庫與vb合作的重要性,所以我也在想著什麼時候再把陳偉老師的視訊看一下,之前看的時候那些非常陌生的東東再看的時候就應該會開朗一些了吧呵呵。

2.VB訪問資料庫方式的選擇

       VB訪問資料庫的技術和方式有很多種,通過對vb資料庫開發例項的學習對其中的ADO技術瞭解了一些。不過還是對以前沒聽說過的東東找出來對比一下才能記得牢啊。

(1)DAO技術

        DAO(Data Access Object,即資料訪問物件)是一種Microsoft Jet資料庫引擎的面向物件的介面。DAO通過程式設計直接控制Jet資料庫引擎以實現複雜的資料庫應用系統.適用於單機應用系統或小範圍本地的分佈應用,例如和Access的連線。

        VB已經把DAO模型封裝成了Data控制元件(就是vb工具箱中的)。分別設定相應的屬性就可以將Data控制元件與資料庫中的記錄源連線起來.通過使用Data控制元件來對資料庫進行操作。但是DAO資料庫引擎不是真正的客戶機/伺服器資料庫引擎。

(2 )RDO技術

        RD0(Remote Data objects,即遠端資料物件)是一個到ODBC的、面向物件的資料訪問介面,是用來對遠端資料庫進行訪問的,特別適合於客戶機/伺服器型資料庫應用程式。和DAO一樣 在VB中也把其封裝為RDO控制元件了,其使用方法與DAO控制元件的使剛方法完全一樣。

(3 )ADO技術

         ADO(ActiveX Data Object.即ActiveX資料物件)是基於LOE DB之上的面向物件的資料訪問模型.是DAO/RDO的後繼產物。與其他資料訪問物件相比,ADO包含的物件較少,更便於掌握和使用。

         ADO實際是一種提供訪問各種資料型別的連線機制。由於ADO

是為Microsoft最新和最強大的資料訪問範例OLE DB而設計的,OLE DB為任何資料來源提供了高效能的、快速的訪問。這些資料來源包括關係和非關係資料庫、電子郵件和檔案系統、文字和圖形等等。因此ADO通過其內部的屬性和方法提供統一的資料訪問介面方法。所以,通過ODBC的方法同資料庫介面,可以使用任何一種ODBC資料來源,即不止適合於SQL Server、Access等資料庫應用程式,也適合於Excel表格、文字檔案、圖形檔案,是一個便於使用的應用程式層介面。

       ADO在關鍵的應用方案中使用最少的網路流量,並且在前端和資料來源之間使用最少的層數.所有這些都是為了提供輕量、高效能的介面,所以ADO易於使用、速度快、記憶體支出少、磁碟遺蹟少。

       另外.在VB6.0中有兩種ADO型別庫.一種稱為ADODB(在做學生管理系統的時候目前看都是使用的這個).另一種稱為ADOR。其中,ADODB功能更強大.它包含了主要的ADO物件.

3.對比

        ADO是獨立於開發工具和開發語言的簡單而且容易使用的資料介面。同ADO相比,其他兩種資料訪問介面都會黯然遜色。另外,ADO更容易使用,效能更好,訪問快速,效能高,並且提供了在Internet上資料庫存取的良好介面,對網路資料庫應用開發提供了極大的便利。

        VB已經把DAO模型封裝成了VB工具箱裡的一個基本控制元件,即Data控制元件,這樣說相信大家就更清楚了。

RDO和DAO有許多相似之處,且RDO沒有考慮與Web接軌.其應用訪問也受到限制。

4.VB資料庫應用

       這是對例項的一個整體的概括。

   

5VB資料庫應用教學中的常見錯誤及難點

(1 )繫結控制元件訪問資料庫時的常見錯誤

       在VB中,資料控制元件本身不能顯示資料庫的資料,必須通過文字框、標籤、影象框、列表框、組合框、複選框、網格和OLE容器等控制元件繫結。繫結後也必須對控制元件的其  他兩個屬性進行設定,才顯示欄位的內容:

       DataSource屬性:通過指定有效的資料控制元件訪問到資料庫上;

       DataField屬性:設定資料庫有效的欄位與繫結控制元件建立聯絡。

      (1)如果將RecordType屬性設定為SnapShot型別,記錄集為只讀狀態,在瀏覽記錄集時無法編輯記錄資料。

      (2)當EofAction屬性設定為2後,要向記錄集加入空記錄,需要單擊控制元件的最後一條記錄按鈕,然後再單擊下一條記錄的按鈕,才能進入Eof狀態。當資料編輯後,必須單擊控制元件上的按鈕移動記錄,使所作的改變存人資料庫中。為使使用者對資料庫進行修改,必須將控制元件的ReadOnly設定為False。

     (3)當RecordSource屬性重新設定後,必須用Refresh方法啟用這些變化,否則資料控制元件訪問的資料來源還是原來的記錄集。

     (4)在多表操作中,當兩個表中具有相同的欄位時,常出現找不到相應欄位,可在欄位名前加上表名字首,表名與欄位之間的訪問必須用西文符號“.”。

     (5)單選按鈕不能被欄位繫結,故要通過Click事件程式設計進行讀寫。

     (6)呼叫Updata方法寫入記錄前,必須保證已呼叫了Addnew或Edit方法,否則程式在執行時要產生3020實時錯誤(在不使用Addnew或Edit的情況下,更新或取消更新)。在呼叫AddNew方法後呼叫Updata方法寫入記錄,記錄指標自動返回到新增新記錄前的位置上,所以窗體上不顯示新記錄。為此,在呼叫up—data方法後,使用MoveLast方法將記錄指標再次移到當前新記錄上。

     (7)移動記錄後,必須判斷當前記錄位置是否在有效範圍內,否則下一次操作將產生越界錯誤。

     (8)刪除記錄後,顯示的記錄還是被刪除的那一條記錄時,必須移動記錄指標來重新整理。

(2)採用ADO技術時的常見錯誤

(1)連線資料庫失敗。

       這有四種可能。一是沒有執行連線程式碼;二是沒有在“工程”選單中的引用對話方塊載入Microsoft ActiveX Data Objects 2.5 Library,即Ado物件;三是如果設定了靜態的資料庫存放絕對路徑,下次連線資料庫時這個路徑更改了,當然無法找到資料庫,用動態資料庫連線的可解決此類問題,四是遠端連線的時候沒有關閉防火牆。

 (2)SQL操作失敗

      這主要是因為錯誤的SQL語法或執行導致的。

舉個例子:txtSQL = "select * from student_Info where class_NO=' " & Trim(txtClassno.Text) & " ' "


        txtSQL變數是字串連線的結果,必須用到雙引號;加上SQL語言中的有字串資料,而字串資料用單引號括起來,這些都導致該VB程式碼較複雜,雙引號和單引號交叉出現。以上任何一個細節出錯都會導致一個錯誤SQL語法。

        我的學生管理系統還沒有完成,但是我每每把一個窗體甚至還沒有完成一個窗體時就蹦錯,調了又調,真是鬱悶啊,不過幸好,當遇到錯誤會去網上找答案,看看前人的解決方法,有的時候還會學到一些意想不到的知識,感覺很值得;當請同學來幫忙解決的時候當然也會獲取到一些知識啦,這又是一種收穫,不過我還是想說調程式碼的滋味真的不是很好受啊。