一、數據錄入
通過VB向SQL Server數據庫中錄入數據,可以使用數據綁定控件錄入數據與使用SQL語句錄入
1.利用數據綁定控件錄入數據
使用數據綁定控件錄入數據可以運行較少的代碼,實現向數據庫中錄入數據,數據綁定后,由於數據綁定控件已經與數據表相連接,所以只需通過ADO控件的AddNew方法添加一條新的空白記錄,再通過Update方法保存當前的記錄,即可完成向數據庫中錄入數據。
例:向數據庫中添加一條記錄
Private Sub cmdAdd_click() Adodc1.Recordset.AddNew End Sub Private Sub cmdSave_click() Dim I as Long for I =0 to 6 Adodc.Recordset.Fields(i).value=Text(i+1).text Next I Adodc1.Recoedset.Update MsgBox"添加信息成功!" End Sub
2.使用Insert語句錄入數據
使用SQL語句錄入數據,通過connection對象的execute方法執行SQL語句,語法如下:
connection.execute 字符串,記錄數,字符串參數
例:向student數據庫中添加一條學生信息
Dim cnn as ADODB.conection Dim rst as ADODB.recordset Private sub Form_Load() set cnn=New ADODB.connection set rst=new ADODB.recordset cnn.open"provider=SQLOLEDB;Persist security Info=True;User ID=sa;Initial Catalog=student;Data Source=." rst.open"select * from student_info",cnn set MSHFlexGrid.DataSource=rst End Sub Private sub cmdAdd_click() cnn.execute"insert into student_info(txtSID,txtName,txtSex;txtBornData,txtRuDate,txtClassNo)" & _ "value('" & txtSID & "','" & txtName & "','" & txtSex & "','" & txtBornDate & "','" & txtRuDate & "','" & txtClassNo & "')" End Sub
二、數據刪除
通過VB刪除數據時,不僅可以使用SQL語句中的Delete語句來實現,也可以使用ADO控件Delete方法來刪除數據。
1.使用ADO控件Delete方法刪除數據
使用ADO控件Delete方法刪除數據時,被刪除的數據信息表面上是被刪除了,實質上數據還存在與內存中,這時還需要使用ADO控件的Update方法才能夠將數據徹底地刪除
例:刪除表中的指定記錄:
Adodc1.Recordset.Delete
Adodc1.Recordset.Update
例:通過ADO控件Delete方法刪除表中指定的數據:
Private Sub Form_Load() Adodc1.ConnectionString="Provider=SQLOLEDB;Persist Security Info=True;User ID=sa;Initail Catalog=student;Data Source=." Adodc1.Commandtype=adCmdText Adodc.Recordsource="select * from student_info" Set DataGrid1.DataSource=Adodc1 End Sub Private Sub Command1_Click() Adodc1.Recordset.Delete If Msgbox("確認刪除指定數據嗎?",vbYesNo,"提示")=vbYes then Adodc1.Recordset.Refresh End If End Sub
2.執行Delete語句進行數據刪除
使用Delete語句刪除數據,不僅可以刪除指定的一條或多條語句,也可以將數據表中的數據全部刪除
例:在VB中執行Delete語句刪除表student中的全部數據
Cnn.Execute"delete from student"
可以在Delete語句后使用where來限定條件,將條件符合的數據刪除
例:刪除表student中年齡大於25歲的數據
Cnn.Execute "delete from student where 年齡>'25'"
3.刪除列中的數據
無論是通過ADO控件Delete方法還是delete語句刪除數據,都是將一行或多行數據全部刪除,如果表中一些行的數據需要保留某些列中的信息,那么使用ADO控件Delete方法或Delete語句都是比較麻煩的。
對於刪除表中的數據,可以采取數據的方式實現,即將刪除列中的數據直接更新為Null
例:通過ADO控件Update方法刪除表中列的數據
Private Sub Command1_Click() Adodc1.Recordset.Update 1,Nul End Sub
三、數據修改
在VB中修改數據,不僅僅可以采用執行SQL語句實現,也可以通過數據綁定控件進行數據的修改。數據綁定控件進行數據的修改采用的代碼較少,特別是一些表格類數據綁定控件,不需要代碼即可對數據進行修改,如DataGrid控件。
1.使用Update語句修改數據
Update語句通過ADO對象的Execute方法執行,達到對數據表中的數據進行修改
Cnn.Execute"Update 數據表名稱 set 字段1=表達式1,字段2=表達式2……where子句"
在Update語句中可以使用where子句,還有符合條件的數據可執行修改操作,如果使用where指定條件,則Update語句會修改表中的全部數據
通常都是在批量更改時采用該語句,這種方法要比ADO的Update方法逐條地修改數據方便,但VB中一些表格控件可以不需要代碼而直觀實現數據的批量修改
2.表格數據綁定控件修改數據
在VB中采用表格數據綁定修改控件修改數據,基本上不需要代碼,只需要設置表格數據綁定控件的一些屬性即可實現,例如DataGrid控件,將其綁定到相應的數據源上,再設置其AllowUpdate屬性為True,即可實現表格中修改的數據及時更新到數據庫中
該屬性可返回或設置一個值,指示用戶能否修改DataGrid控件中的數據,語法:
DataGrid.AllowUpdate=布爾表達式
例:使用DataGrid控件修改數據
Private Sub Form_Load() '設置連接字符串 Adodc1.ConnectionString="Provider=SQLOLEDB;Persist Security Info=True;User ID=sa;Initial Catalog=student;Data Source=." '設定數據源 Adodc1.CommandType=adcmdText Adodc1.RecordSource="select * from student_Info order by student_ID" '為DataGrid控件綁定數據源 Set DataGrid1.DataSouce=Adodc1 '允許DataGrid1控件更新表中的數據 DataGrid1.AllowUpdate=True End Sub
3.使用文本數據綁定控件修改數據
與DataGrid控件不同,文本類控件綁定數據后在修改數據時,由於所修改的數據只是寫入在緩存當中,所以需要通過ADO的Update方法提交修改,另外,ADO還提供CancelUpdate方法,用此方法來撤銷在使用Update方法前對數據所作的修改,在程序中使用CancelUpdate方法的代碼如下:Adodc1.Recordset.CancelUpdate
例:使用文本控件綁定數據並進行修改數據
'設置連接字符串與數據源,並綁定數據源 Private Sub Form_Load() Adodc1.ConnectiongString="Provider=SQLOLEDB;Persist Security Info=True;User ID=sa;Initial Catalog=student;Data Source=." Adodc1.RecordSource="select * from Course_Info" Set Text1.DataSource=Adodc1 Text1.DataField="課程名稱" End Sub '提交保存數據 Private Sub Commad1_Click() Adodc1.Recordset.Update MsgBox"保存成功!",vbOKOnly,"提示" End Sub '撤銷數據修改 Private Sub Command2_Click() Adodc1.Recordset.CancelUpdate End Sub
四、數據查詢
VB中查詢數據庫中的數據不僅可以通過執行SQL語句實現,也可以通過控件或對(如ADO)限定檢索數據的條件來實現。
1.簡單查詢
簡單查詢可以通過Select語句限定數據源來實現。在Select語句中使用關鍵字、子句等實現。
下面對幾種常用的簡單查詢進行介紹:
1)使用AS改變查詢數據的列名
多數情況下,在SQL Server中創建表的字段都是以英文命名的,這些字段名在顯示時給一般用戶帶來不便,那么可以在查詢中采用AS來改變字段在顯示時的名稱。
例:使用AS改變查詢數據的列名
Private Sub cmdModify_Click() Adodc.RecordSource="select ID as 編號,Mailbox as 電子郵箱 from Mail_Info" Adodc.Refresh End Sub
2)計算查詢的結果
VB編寫的程序中,往往需要將數據庫中的數據進行計算,以便獲得所需的數值。
通過在查詢語句中使用算術運算符,在配合AS為計算出的字段設置名稱,即可在查詢結果中顯示計算得到的數據。
例:計算查詢的結果
Private Sub cmdAcount_Click() Adodc.RecordSource="select 卡號,每小時上機費用,上機時間(每小時上機費用*上機時間)as 收費金額 from 學生上機收費金額表" Adodc.Refresh End Sub
3)比較條件查詢
在查詢語句中可以包含比較運算,常用的比較運算符有=、<、>、<>、!>、!<、>=、<=、!=。使用這些運算符連接表達式形成一個比較條件,系統將根絕該查詢條件返回的布爾值來判斷數據是否滿足該查詢條件,只有滿足條件的數據才會出現在查詢的結果集中。
這些比較條件在查詢語句中需要與where子句連用,但是VB提供Filter屬性為Recordset中的數據指定篩選條件。該屬性根據條件可選擇性地屏蔽Recordset對象中的記錄,該屬性語法如下:Recordset.Filter=字符串
例:通過Filter屬性實現比較條件查詢
'設置連接、數據源與初始化程序 Private Sub Form_Load() Adodc.connectionString="provider=SQLOLEDB;Data Source=.;Initail CataLog=student;UID=sa;PWD=123456" Adodc.Recordset="select stuID as 學號,stuname as 姓名,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 '查詢信息以及錯誤處 Private Sub cmdQuery_Click() On Error Resume Next If Combo1.text<>"" and Combo2.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”。
例:查詢指定日期時間的數據
Private Sub cmdQuery_Click() On Error Resume Next Adodc.Recordset.Filter="出生日期="' & Trim(txtYear.Text) & "-" & Trim(txtMonth.Text) & "-" & Trim(txtDay.Text) & "0:00:00"' If Err then Msgbox"請輸入正確信息!",vbOKOnly,"錯誤" End sub Private 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 End 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 Sub Private 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