在使用command时和查询略有区别:
查询使用的是 command.ExecuteReader 返回一个 DbDataReader
修改使用的是command.ExecuteNonQuery 可以返回受此操作影响的数据条数,当然也可以不用返回值。
以一个实例来说明。
此例子中使用了的是northwind中的雇员表
前期准备包括获得雇员姓名显示在comboBox 中,当选择了一个雇员时会将该人信息显示在相应的textBox或者datetimepicker中。
定义一个窗体级变量:
Dim odc As OleDbConnection
窗体载入时获得所有雇员姓名并填充到cbEmployee中:
Private Sub Form6_Load(sender As Object,e As EventArgs) Handles MyBase.Load odc = New OleDbConnection() odc.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;data source=Northwind.mdb;" Dim odcommand As New OleDbCommand() odcommand.CommandText = "select 雇员ID,(姓氏+名字) as 姓名 from 雇员" odcommand.Connection = odc odc.Open() Dim odReader As OleDbDataReader odReader = odcommand.ExecuteReader(CommandBehavior.SingleResult) If odReader.HasRows Then Do While odReader.Read cbEmployee.Items.Add(odReader("姓名")) Loop End If cbEmployee.SelectedIndex = 0 End Sub
当从cbEmployee中选择雇员时,显示相应信息,
需要注意的是这里我偷了一个懒,由于雇员ID是递增的,中间没有删除遗漏,所以可以使用cbEmployee中Item的index来获得雇员ID。
Private Sub cbEmployee_SelectedIndexChanged(sender As Object,e As EventArgs) Handles cbEmployee.SelectedIndexChanged Dim id As Integer = cbEmployee.SelectedIndex + 1 Dim odcommand As New OleDbCommand() odcommand.CommandText = "select * from 雇员 where 雇员ID=" & id odcommand.Connection = odc Dim odReader As OleDbDataReader odReader = odcommand.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.SingleRow) If odReader.HasRows Then odReader.Read() txtDuties.Text = odReader("职务") txtAppellation.Text = odReader("尊称") dtpBirthday.Value = odReader("出生日期") dtpEmployDay.Value = odReader("雇用日期") txtCountry.Text = odReader("国家") txtCity.Text = odReader("城市") txtArea.Text = odReader("地区") txtAddress.Text = odReader("地址") txtZipcode.Text = odReader("邮政编码") txtPhone.Text = odReader("家庭电话") Else MessageBox.Show("错误的编号") End If End Sub
运行效果如下:
由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。
学习更多vb.net知识,请参看vb.net 教程 目录