摘 要: 在軟件開發以B/S模式為主流的今天,VB仍然在一些基于C/S模式的中小型系統中以其簡單易用、輕巧靈活的特點發揮著重要作用,而系統中對后臺數據庫的高效率操作則是系統應用的重要保障,借助數據綁定控件的算法,可以憑借其簡短、易懂的代碼,高效、方便地實現數據庫操作這一典型應用。
關鍵詞: 數據庫; 數據操作; 數據綁定; 控件
中圖分類號:TP311 文獻標志碼:A 文章編號:1006-8228(2015)10-24-03
Abstract: Nowadays, software development is mainly based on B/S Mode. However, it's undeniable that owing to its characteristics of simplicity and flexibility, VB is still playing an important role in small and medium systems based on C/S Mode. The efficient operation of the background database is an important guarantee for the application of the system. With the help of algorithms and ideas of data-bound control, and VB's brief, easy-to-understand code, the operation of database can be achieved easily and efficiently.
Key words: database; data operation; data-bound; control
0 引言
在互聯網技術高速發展的今天,軟件系統的開發已經基本采用B/S架構(Browser/Server,瀏覽器/服務器架構),或者B/S與C/S(Client/Server,客戶機/服務器)混合架構,借助瀏覽器在互聯網的支持下實現信息、數據等資源的互操作。但以VB為典型的支持C/S架構的編程語言仍然在一些中小型系統中以其簡單易用、輕巧靈活的特點[1]發揮著重要作用。在系統開發中,如何對后臺數據庫進行高效率操作是系統應用和擴展的重要保障。本文以基于VB的數據綁定控件方法為例,對數據庫操作這一典型應用進行論述,數據庫操作主要包括數據的添加、修改、刪除、查詢、導出等,采用的編程語言是VB 6.0企業版,連接的后臺數據庫是Access 2010。借助VB前臺對后臺Access數據庫進行數據操作的方法有多種,但以非數據綁定控件的算法和利用數據綁定控件[2]的算法兩種為主。筆者將在介紹和比較兩種算法原理的基礎上,重點論述數據綁定控件在數據庫操作中的優點,并利用數據綁定控件設計與實現了我??蒲辛炕芾硐到y。
1 兩種算法的比較
假設非數據綁定控件和數據綁定控件都是采用ADO對象連接數據庫的技術,比較的范圍主要包括:代碼量和代碼的可擴展性和移植性等方面。接下來將以圖1某系統學生基本信息維護這一功能模塊為例,從上述范圍對二者展開比較和分析。
1.1 非數據綁定控件算法
在非數據綁定控件算法中,由于數據與控件是相互分離的,每增加、修改或刪除一條數據記錄都需要通過相應的字段逐條添加、修改和刪除,尤其是在添加記錄過程中,需要將AddNew方法和Update方法放在一起組合使用。部分實現代碼如下。
⑴ 添加一條學生基本信息記錄的部分代碼
With Adodc1.Recordset
.AddNew
.Fields(“序號”)=Text1(0).Text
.Fields(“姓名”)=Text1(1).Text
.Fields(“??茖I”)=Combo1(0).List(0)
.Fields(“本科專業”)=Combo1(1).List(0)
……
.Fields(“郵編”)=Text1(8).Text
.Fields(“年級”)=Combo1(3).List(3)
.Update
End With
⑵ 修改一條學生基本信息記錄的部分代碼
With Adodc1.Recordset
.Fields(“序號”)=Text1(0).Text
……
.Fields(“年級”)=Combo1(3).List(0)
.Update
End With
1.2 數據綁定控件算法
在數據綁定控件的算法中,用于接收和顯示數據的控件已經和后臺數據庫相應的字段連接成功,錄入數據時,只需要在綁定的控件中直接錄入相關的數據,借助Toolbar中不同的功能按鈕實現系統前臺與后臺數據庫的數據操作,僅僅需要少量代碼[3]便可實現相關的數據操作。假設通過Toolbar1響應數據庫操作,仍以上述某系統學生基本信息維護模塊為例,部分實現代碼如下。
⑴ 添加一條學生基本信息記錄的部分代碼
Case \"tianjia\"
Adodc1.Recordset.AddNew
For i=0 To Text1.UBound
Text1(i)=\"\"
Text1(i).Locked=False
Next i
For j=0 To Combo1.UBound
Combo1(j).Locked=False
Next j
Combo1(0).SetFocus
⑵ 修改一條學生基本信息記錄的部分代碼
Case \"xiugai\"
For i=0 To Text1.UBound
Text1(i).Locked=False
Next i
For j=0 To Combo2.UBound
Combo1(j).Locked=False
Next j
⑶ 保存一條生基本信息記錄的部分代碼
Case \"baocun\"
For i=0 To Text1.UBound
Text1(i).Locked=True
Next i
For j=0 To Combo1.UBound
Combo1(j).Locked=True
Next j
Adodc1.Recordset.Update
1.3 代碼分析和比較
1.3.1 添加和修改模塊
在非數據綁定控件算法中,無論是“添加”還是“修改”模塊,都要重復地寫代碼來說明是對哪一個字段進行數據操作,代碼不簡潔;而在數據綁定控件算法中,無需再對數據庫中的字段重新說明,只需通過For循環設置文本框控件數組或下拉列表框控件數組的Locked屬性,以明確文本框和下拉列表框是否處于可編輯的狀態。
1.3.2 關于AddNew方法和Update方法
在非數據綁定控件算法中的“修改”模塊,AddNew方法和Update方法必須放在一起組合使用,才能保證添加記錄后對數據庫的更新;而在數據綁定控件算法中,AddNew方法和Update方法無需放在一起組合使用,二者相互分離,在“添加”模塊中使用AddNew方法添加記錄,在“保存”模塊中使用Update方法更新數據庫,簡潔明了,減少了重復代碼所帶來的冗余。
1.3.3 關于boolean型變量
在非數據綁定控件算法中,如果將數據的添加、修改、刪除等操作放在同一事件下響應,例如在Toolbar1_ButtonClick事件中發生,則還需要增加一個boolean型變量,以判斷用戶當前是在進行何種數據操作。而在數據綁定控件算法中,無需專門聲明一個boolean型變量來判斷當前正在執行何種數據操作。
綜上所述,使用數據綁定控件算法實現數據庫操作具備如下優勢:
⑴ 減少了冗余,縮短了程序代碼量,易于程序的擴展;
⑵ 利于對程序的修改,從某種程度上減少了程序員的工作量,降低了實現數據操作的難度;
⑶ 增強了程序的可讀性,易于后期的軟件測試;
⑷ 將數據和控件綁定在一起,通過DataField實現數據和字段的一一對應,利于數據庫字段的靈活變動。
接下來,將采用數據綁定控件的方法在我校科研量化管理系統中進行驗證。
2 實例驗證
科研量化管理系統是我校科研處的一項分支活動,主要負責對在職在崗教師年度論文發表情況、課題申報與研究情況、科研獲獎情況等信息的管理,數據量不大,且不需要和其他同構或異構的系統交互,在科研處有專職人員負責這項工作,因此采用VB連接Access數據庫的C/S架構簡單易行[4]。
2.1 科研量化管理系統的功能設計
此科研量化管理系統的服務功能如圖2所示。
[自考助學管理系統][登錄模塊][管理模塊][統計模塊][查詢模塊][缺考人數][學生人數][平均成績][不及格人數][成績錄入管理][成績修改管理][成績刪除管理][密碼管理][用戶管理][注冊管理][成績查詢][基本信息查詢]
圖2 運河高師科研量化管理系統功能服務圖
2.2 系統數據操作的實現
系統中所有添加、修改、刪除等功能是通過Toolbar與用戶交互的,所用的數據庫連接辦法是ADO對象[5]。下文以教師的科研信息管理模塊為例描述數據綁定控件算法在數據操作中的具體應用與實現。
⑴ 操作界面
圖3是系統中教師科研信息管理的用戶操作界面,所有的按鈕集成在Toolbar1中,在該界面下方通過DataGrid控件實現數據的同步顯示。
⑵ 具體數據操作功能的實現
絕大部分數據操作的觸發均發生在Toolbar1中的ButtonClick事件中,采用數據綁定控件算法來實現數據操作。部分功能的參考代碼如下:
① 添加新記錄
Adodc2.Recordset.AddNew
For i=0 To Text1.UBound
Text1(i)=\"\"
Text1(i).Locked=False
Next i
For j=0 To Combo1.UBound
Combo1(j).Locked=False
Next j
Combo1(0).SetFocus
② 修改記錄
For i=0 To Text1.UBound
Text1(i).Locked=False
Next i
For j=0 To Combo1.UBound
Combo1(j).Locked=False
Next j
③ 保存記錄
For i=0 To Text1.UBound
Text1(i).Locked=True
Next i
For j=0 To Combo1.UBound
Combo1(j).Locked=True
Next j
If Text1(3).Text=\"\" Then
MsgBox \"身份證號不能為空!\"‘身份證號為主鍵,作為學生相互
區分的惟一標識
Text1(3).Locked=False
Else
Adodc2.Recordset.Update '更新數據庫
MsgBox \"保存成功!\"
End If
④ 取消當前操作
For i=0 To Text1.UBound
Text1(i).Locked=True
Next i
Adodc2.RecordSource=\"select * from 科研信息表\"
Adodc2.Refresh
⑤ 刪除記錄
If MsgBox(\"您確定要刪除此項記錄嗎?\", vbYesNo, \"提示\")
=vbYes Then
Adodc2.Recordset.Delete
Adodc2.Recordset.Update
End If
⑥ 數據查詢
以按教師所屬部門查詢為例:
Adodc2.RecordSource=\"select * from科研信息表where所屬
部門='\" Text25.Text \"'\"
Adodc2.Refresh
3 結論
在VB中采用ADO對象連接數據庫,必然涉及到數據操作,而輕巧、靈活、易懂的代碼可以提高編程效率和程序的可擴展性、增強程序的可讀性?;诖四繕?,本文提出了一種數據綁定控件算法,將數據與用來接收數據的控件進行綁定,并在具體的科研量化管理系統中加以驗證,收到了較好的效果。
參考文獻:
[1] 劉巖,劉鵬.應用VB和Access數據庫設計開發學報稿件管理系統[J].中國科技期刊研究,2010.21(3):339-342
[2] 高春艷,劉彬彬等.Visual Basic開發實戰寶典[M].清華大學出版社,2010.
[3] 楊得亮,崔松濤.基于VB與Access數據庫的電纜快速設計系統[J].計算機工程與設計,2011.32(12):4282-4285
[4] 張妍垚,孫曦東.VB連接數據庫[J].微處理機,2010.31(3):53-55
[5] 王祥瑞,黃國華.ADO數據庫訪問技術[J].長春大學學報(自然科學版),2010.20(1):62-63