前面的學習中,我們已經學習了一些VB6.0操作SQL Server的基本操作,原文連結如下:
VB6.0操作SQL Server(一)——如何串連資料庫
VB6.0操作SQL Server(二)——資料錄入
VB6.0操作SQL Server(三)——資料刪除
VB6.0操作SQL Server(四)——資料修改
今天,我們來學習,資料查詢:
VB中查詢資料庫中的資料不僅可以通過執行SQL語句實現,也可以通過控制項或對(如ADO)限定檢索資料的條件來實現。
1.簡單查詢
簡單查詢可以通過Select語句限定資料來源來實現。在Select語句中使用關鍵字、子句等實現。
下面對幾種常用的簡單查詢進行介紹:
1)使用AS改變查詢資料的列名
多數情況下,在SQL Server中建立表的欄位都是以英文命名的,這些欄位名在顯示時給一般使用者帶來不便,那麼可以在查詢中採用AS來改變欄位在顯示時的名稱。
例:使用AS改變查詢資料的列名
PrivateSub cmdModify_Click() Adodc.RecordSource="select ID as 編號,Mailbox as 電子郵箱 from Mail_Info" Adodc.RefreshEnd Sub
2)計算查詢的結果
VB編寫的程式中,往往需要將資料庫中的資料進行計算,以便獲得所需的數值。
通過在查詢語句中使用算術運算子,在配合AS為計算出的欄位設定名稱,即可在查詢結果中顯示計算得到的資料。
例:計算查詢的結果
PrivateSub cmdAcount_Click() Adodc.RecordSource="select 卡號,每小時上機費用,上機時間(每小時上機費用*上機時間)as 收費金額 from 學生上機收費金額表" Adodc.RefreshEnd Sub
3)比較條件查詢
在查詢語句中可以包含比較運算,常用的比較子有=、<、>、<>、!>、!<、>=、<=、!=。使用這些運算子串連運算式形成一個比較條件,系統將根絕該查詢條件返回的布爾值來判斷資料是否滿足該查詢條件,只有滿足條件的資料才會出現在查詢的結果集中。
這些比較條件在查詢語句中需要與where子句連用,但是VB提供Filter屬性為Recordset中的資料指定篩選條件。該屬性根據條件可選擇性地屏蔽Recordset對象中的記錄,該屬性文法如下:Recordset.Filter=字串
例:通過Filter屬性實現比較條件查詢
'設定串連、資料來源與初始化程式PrivateSub Form_Load() Adodc.connectionString="provider=SQLOLEDB;Data Source=.;InitailCataLog=student;UID=sa;PWD=123456" Adodc.Recordset="select stuID as 學號,stunameas 姓名,stuage as 年齡 from student_info" set DataGrid.DataSource=Adodc Combo1.AddItem"學號" Combo1.AddItem"姓名" Combo1.AddItem"年齡" Combo2.AddItem">" Combo2.AddItem"<" Combo2.AddItem">=" Combo2.AddItem"<=" Combo2.AddItem"="End Sub '查詢資訊以及錯誤處PrivateSub cmdQuery_Click() On Error Resume Next If Combo1.text<>"" andCombo2.text<>"" then Adodc.Recordset.Filter=Adodc.Recordset.Fields(Combo1.ListIndex).Name& Combo2.Text & "" & Trim(txtQuery.text) &"" End If If Err then Msgbox"請輸入正確資訊!",vbOKOnly,"警告"End Sub
2.模糊查詢
模糊查詢是通過在VB中查詢與所給查詢內容相似的資訊。
實現模糊查詢可以通過執行SQL語句中的Like語句實現。Like語句用來確定給定的資料資訊是否與指定的模式比對。(模式可以包含常規字元和萬用字元字元。)Like也可以在ADO的Filter屬性中使用。
下面介紹在Filter屬性中使用Like與萬用字元的幾種方法:
3.日期和時間查詢
對日期和時間的資料查詢,可以通過VB中的ADO的Filter屬性限定篩選條件,或執行查詢SQL語句實現。
1)查詢指定日期時間的資料
在SQL語句中,可以使用運算子(>、=、<、Like等)查詢日期/時間類型的資料。日期時間字串的書寫要符合一定的格式,例如“2012-08-13
0:00:01”。
例:查詢指定日期時間的資料
PrivateSub cmdQuery_Click() On Error Resume Next Adodc.Recordset.Filter="出生日期="'& Trim(txtYear.Text) & "-" & Trim(txtMonth.Text) &"-" & Trim(txtDay.Text) & "0:00:00"' If Err thenMsgbox"請輸入正確資訊!",vbOKOnly,"錯誤"End sub PrivateSub Form_Load() Adodc.ConnectonString="Provider=SQLOLEDB;Data Source=.;InitailCatalog=student;UID=sa;PWD=123456" Adodc.RecordSource="select stuID as 學號,stuNameas 姓名,stuAge as 年齡,stuBornDate as 出生日期 from Student_Info" set DataGrid.DataSource=AdodcEnd Sub
2)分別按年、月、日等查詢資料
在設計資料庫系統應用程式時,往往需要查詢某一年、某個月或某一天的資料。如果採用指定日期時間的方式來查詢,雖然可以實現,但是過程是很麻煩的。這時可以採用Year、Month、Day等函數,對資料庫中日期時間資料提取年、月、日等相關資訊;然後結合指定日期時間的查詢方式,即可方便地查詢到某一年、某個月或者某一天的資料。
例:按年、月、日等查詢資料
Private Sub cmdQuery_Click() Dim stc as string On Error Resume Next Select Case combo1.ListIndex Case 0 stc="year" Case 1 stc="month" Case 2 stc="day" End Select Adodc.RecordSource="select stuID as 學號,stuName as 姓名,stuAge as 年齡,stuBornDate as 出生日期 from Student_Info where " & stc & "(stuBornDate)='" & txtQuery.Text & "'" Adodc.Refresh If Err then Msgbox"請輸入正確資訊!",vbOKOnly,"錯誤"\End SubPrivate Sub Form_Load() Adodc.ConnectonString="Provider=SQLOLEDB;Data Source=.;Initail Catalog=student;UID=sa;PWD=123456" Adodc.RecordSource="select stuID as 學號,stuName as 姓名,stuAge as 年齡,stuBornDate as 出生日期 from Student_Info" set DataGrid.DataSource=Adodc combo1.AddItem"按年" combo1.AddItem"按月" combo1.AddItem"按日"End Sub
通過VB6.0操作SQL Server進行資料查詢的內容就先介紹這麼多,不知道您是否能夠理解,如果有什麼好的意見或建議,還望不吝賜教。