摘要:介紹了在VB中使用ADO對SQL Server數(shù)據(jù)庫調(diào)用的方法,并給出了一個用VB設(shè)計C/S模式下學生成績打印系統(tǒng)的實例。
關(guān)健詞:VB ADOSQL Server C/S
SQL Server是微軟公司推出的中小型網(wǎng)絡數(shù)據(jù)庫系統(tǒng),它具有強大的數(shù)據(jù)處理功能和可靠的安全性能,已經(jīng)成為新一代網(wǎng)絡應用程序的最佳數(shù)據(jù)庫解決方案之一。網(wǎng)絡環(huán)境下的客戶端應用程序一般采用客戶/服務器(Clienf/Server,即c/s)模式;而用于構(gòu)建客戶端的編程工具較多,如VB、PB、Delphi等。VB作為一種面向?qū)ο蟮目梢暬幊坦ぞ撸哂泻芨叩木幊绦?,對于一般中小型的信息管理系統(tǒng)來說,用其作為SQL Server 2000數(shù)據(jù)庫管理系統(tǒng)的客戶端開發(fā)工具是一種合理的選擇。
一、ADO對象模型
在Visual Basic中,可用的數(shù)據(jù)庫訪問接口有三種:Active數(shù)據(jù)對象(Active Data Objects,簡稱ADO)、遠程數(shù)據(jù)對象(RDO)和數(shù)據(jù)訪問對象(DAO)。
Active數(shù)據(jù)對象(Active Data Objects)ADO是一種提供訪問各種數(shù)據(jù)類型的連接機制,是比RDO和DAO更加簡單,而又更加靈活的對象模型。ADO設(shè)計為一種極簡單的格式,通過ODBC的方法同數(shù)據(jù)庫接口,可以使用任何一種ODBC數(shù)據(jù)源,即不只適合于SQL Server、Oracle、Access等數(shù)據(jù)庫應用程序,也適合于Excel表格、文本文件、圖形文件和無格式的數(shù)據(jù)文件。ADO是基于OLE-DB之上的技術(shù),因此ADO通過其內(nèi)部的屬性和方法提供統(tǒng)一的數(shù)據(jù)訪問接口方法更適合于大流量和大事務量的網(wǎng)絡計算機系統(tǒng)。
ADO 模型中頂層有三個對象:Connection、Command、Recordset。Connection對象表示打開的、與數(shù)據(jù)源的連接;Command對象定義了對數(shù)據(jù)源執(zhí)行的指定命令,可接收SQL語句、表的名稱和存儲過程的名稱,執(zhí)行SQL查詢、插入、更新記錄等;Recordset對象表示的是來自基本表或命令執(zhí)行結(jié)果的記錄全集,操作來自提供者的幾乎所有數(shù)據(jù)。ADO數(shù)據(jù)模型中的屬性包括:Proprties(屬性)、Errors(錯誤)、Parameters(參數(shù))及Fidlds(字段)。
二、ADO控件說明
ADOData控件使用ADO快速地創(chuàng)建一個到數(shù)據(jù)庫的連接,它最重要的兩個屬性ConnectionString和Recordsource。ConnectionString設(shè)置控件的連接字符串,用于建立與數(shù)據(jù)庫的連接,例如:Connec-tionString =“Provider= sqloledb;Server= local;Database=pubs;Uid= sa;Pwd = sa”。Provider=sqloledb說明驅(qū)動程序提供者是sqloledb;Server指明SQL Server數(shù)據(jù)庫服務器的名稱或IP 地址;Database指明連接的數(shù)據(jù)庫名稱;Uid與Pwd分別指明登錄數(shù)據(jù)庫的用戶名與密碼。Recordsource屬性為記錄源,通過設(shè)置該屬性控制從數(shù)據(jù)庫中返回的記錄集合。例如:設(shè)置RecordSource=“select * from QQfriend”,將該屬性設(shè)置為一條SQL語句,從數(shù)據(jù)庫返回滿足查詢條件的記錄。
三、ADO編程實例
在本編程實例中,可按學生學號,完成學生成績的查看與打印。
在此學生成績打印程序中,要先在客戶端的數(shù)據(jù)源管理工具中建立好數(shù)據(jù)源。然后使用VB中的ADO Data控件MicrosofiActiveXDataObjects (ADO)快速地創(chuàng)建一個到數(shù)據(jù)庫的連接。ADO控件不在當前工程的控件工具箱中,需要通過“工程”菜單“部件”選項,選中“Microsoft ADO Data Control 6.0”后將此控件加入工具箱即可。其屬性的設(shè)置主要包括以下方面:即使用ODBC數(shù)據(jù)資源的名稱,訪問數(shù)據(jù)庫的用戶名和密碼,記錄源的命令類型及命令文本等。
整個成績打印程序一共有二個窗口。主窗口如圖1所示,窗口中的按鈕實現(xiàn)按學生學號打印學生成績功能。
按學生學號打印學生成績窗口如圖2所示,此窗口主要包括一個隱藏的ADO控件、數(shù)據(jù)控件文本框和一組命令按鈕。ADO控件的主要功能是建立客戶端與服務器端數(shù)據(jù)庫的連接;數(shù)據(jù)控件文本框用于接收用戶輸入數(shù)據(jù),確定訪問數(shù)據(jù)庫的條件;命令按鈕中的確定按鈕通過click事件嵌入SQL命令語句來獲取數(shù)據(jù),并把數(shù)據(jù)傳遞該客戶端的ADO對象,程序就可以實現(xiàn)查詢結(jié)果數(shù)據(jù)的顯示和打印。
具體設(shè)計步驟設(shè)計如下:
1、設(shè)置ADO Data控件的屬性如下:
ODBC數(shù)據(jù)資源名稱為 “mydata”
用戶名username為“stu”
用戶登錄密碼passwd為“111111”
記錄源命令類型cmdtype設(shè)置為“adcmdUknown”。命令文本為“select * from scores”。
2、數(shù)據(jù)說明
設(shè)計程序前,先在SQL數(shù)據(jù)庫中建立相關(guān)視圖,視圖結(jié)合了表(Tables)和查詢(Queries)兩者的特性。用戶可以像使用一個查詢一樣,從一個或多個相關(guān)的表中提取一個數(shù)據(jù)集,并且永久把存貯結(jié)果存貯到磁盤。設(shè)置ADO Data控件的屬性時,記錄源命令文本“select * from=scores”中的scores為SQL數(shù)據(jù)庫mydata中一個視圖,其中包含了學生的學籍基本信息和成績信息,如學生姓名、號、性別、所在院系、所學專業(yè)、入學時間、畢業(yè)時間、各學期成績等。
窗口中“確定”按鈕程序段所涉及到的主要代碼為:
SQL1= “select from scores where xh=” + Trim(Text1.Text) 查詢滿足輸入條件的學生成績
Adodc1.RecordSource=SQL1
Adodc 1.Refresh用于刷新顯示數(shù)據(jù)
StrQuery “select from scores where xqq=2 and cj>=60 and xh=”+Trim(Text1.Text1)
查詢滿足具體學年、學期條件的記錄
Adodc 1.RecordSource=StrQuery
Adodc 1.Refresh
3、學生成績的查看與打印
學生成績的查看與打印是程序?qū)嵗暮诵墓δ懿糠帧?/p>
涉及到的主要代碼:
AutoRedraw =True
BackColor=RGB(155,255,255)
DrawWidth= 1.5
相關(guān)打印參數(shù)設(shè)置
FontBold=True
FontSize= 12
CurrentX = 118.5
CurrentY =9
定位輸出內(nèi)容的坐標位置
StrQuery=\"select * from scores where xqq=2 and xh=” + Trim(Text1.Text)
用于查詢滿足條件的記錄,即查找該學號第二學期所有及格的課程及成績
Adodc1.RecordSource=StrQuery
Adodc1.Refresh
nums=Adodc1.Recordset.RecordCount 統(tǒng)計某一學期總共的課程數(shù)
If Adodc 1.Recordset.EOF=False Then 判斷是否循環(huán)完畢
Adodc 1.Recordset.MoveNext 記錄指針下移
X11=30.5
Y11= 47.5
X12= 79.5
Yl2=47.5
dy=4.55
Printer.FontBold=True
Printer.CurrentX = 30.5
Printer.CurrentY = 42
Printer.Print “課程名稱”
Printer.CurrentX =79.5
Printer.CurrentY =42
Printer.Print “成績”
從打印機上輸出學生成績信息
程序?qū)嵗捎肅/S方式,實現(xiàn)了在VB中使用ADO數(shù)據(jù)對象對SQL數(shù)據(jù)庫的訪問,優(yōu)點在于代碼簡潔,易于開發(fā)者掌握。用戶掌握后,可自行開發(fā)滿足特定需求的應用程序。
參考文獻:
[1]白 鵬.Visual Basic編程實例與技巧數(shù)據(jù)庫編程 [M] .北京:科學出版社,2003.
[2][美]Konrad King SQL Tips Techniques [M] 2003.
[3]將鐵海,劉朝暉.ADO 控件訪問數(shù)據(jù)庫的各種技巧探討 [J].微計算機信息,2003.19(1)
[4]馬紹良,李鳳保,謝閱.用ODBC實現(xiàn)SQL Server 2000在VB中的應用 [J] 計算機應用,2003(1).
(123000阜新高等??茖W校)