(2).Microsoft Data Acess Component 2.6 以上版本 ( MDAC 2.6 )
(3)..Net FrameWork SDK Beta 2
二.数据库的数据字典:
为了更全面的介绍,在数据库的选取方面,选取了二种典型的数据库,其一是本地数据库,也就是本文主要介绍的的数据库Access 2000;另外一个是远程数据库SQL Server 2000。其中Access 2000的数据库名称是"db.mdb",在此数据库中只存放了一张数据表"person",此数据表结构如下:
字段名称
字段类型
字段意思
id
数字
序号
xm
文本
姓名
xb
文本
性别
nl
文本
年龄
zip
文本
邮政编码
远程数据库Sql Server 2000的数据库服务器名称为"Server1",数据库名称为"Data1",登陆的ID为"sa",口令为空,在数据库也只存放了一张"person"数据表,数据结构大致如上。
'创建一个数据连接
Dim strCon As String = " Provider = Microsoft.Jet.OLEDB.4.0 ;
Data Source = db.mdb "
Dim myConn As OleDbConnection = New OleDbConnection ( )
myConn.ConnectionString = strCon
Dim strCom As String = " SELECT * FROM person "
'创建一个 DataSet
myDataSet = New DataSet ( )
myConn.Open ( )
'通过OleDbDataAdapter对象得到一个数据集
Dim myCommand As OleDbDataAdapter = New OleDbDataAdapter
( strCom , myConn )
'把Dataset绑定books数据表
myCommand.Fill ( myDataSet , "person" )
'关闭此数据连接
myConn.Close ( )
'创建BindingManagerBase对象
myBind = Me.BindingContext ( myDataSet , "person" )
对于SQL Server数据库,创建BindingManagerBase对象和Access 2000大致相同,唯一不同的就在于创建数据连接的时候,下面是以SQL Server 2000为操作数据库,数据库服务器名称为"Server1",数据库名称为"Data1",登陆的ID为"sa",口令为空,在数据库也只存放了一张"person"数据表,创建BindingManagerBase对象的程序代码:
'创建一个数据连接
Dim strCon As String = " Provider = SQLOLEDB.1 ;
Persist Security Info = False ; User ID = sa ;
Initial Catalog = data1 ; Data Source = server1 "
Dim myConn As OleDbConnection = New OleDbConnection ( )
myConn.ConnectionString = strCon
Dim strCom As String = " SELECT * FROM person "
'创建一个 DataSet
myDataSet = New DataSet ( )
myConn.Open ( )
'通过OleDbDataAdapter对象得到一个数据集
Dim myCommand As OleDbDataAdapter = New OleDbDataAdapter ( strCom ,
myConn )
'把Dataset绑定books数据表
myCommand.Fill ( myDataSet , "person" )
'关闭此数据连接
myConn.Close ( )
'创建BindingManagerBase对象
myBind = Me.BindingContext ( myDataSet , "person" )
'按钮"尾记录"对象事件程序
Private Sub lastrec_Click ( ByVal sender As Object , _
ByVal e As System.EventArgs ) Handles lastrec.Click
myBind.Position = myBind.Count - 1
End Sub
'按钮"下一条"对象事件程序
Private Sub nextrec_Click ( ByVal sender As Object , _
ByVal e As System.EventArgs ) Handles nextrec.Click
If myBind.Position = myBind.Count - 1 Then
MessageBox.Show ( "已经到了最后一条记录!" , "信息提示!" ,
MessageBoxButtons.OK , MessageBoxIcon.Information )
Else
myBind.Position = myBind.Position + 1
End If
End Sub
'按钮"上一条"对象事件程序
Private Sub previousrec_Click ( ByVal sender As Object , _
ByVal e As System.EventArgs ) Handles previousrec.Click
If ( myBind.Position = 0 ) Then
MessageBox.Show ( "已经到了第一条记录!" , "信息提示!" ,
MessageBoxButtons.OK , MessageBoxIcon.Information )
Else
myBind.Position = myBind.Position - 1
End If
End Sub
'按钮"首记录"对象事件程序
Private Sub firstrec_Click ( ByVal sender As Object , _
ByVal e As System.EventArgs ) Handles firstrec.Click
myBind.Position = 0
End Sub
四.VB.NET来删除数据记录:
在做程序的时候,我们可能有这样的迷惑就是,我们操作的数据集是返回的DataSet对象,如果此时的DataSet对象十分庞大,或者连接到此数据库服务器的客户非常多,这样就会耗费服务器的很多资源,久而久之服务器总有一天可能会崩溃。其实这种担心是没有必要的,因为我们操作的DataSet对象其实产生的位置并不在服务器端,而是客户端,这样上面的几种顾虑就显得没有必要了。但在对数据库进行删除、修改等操作,我们此时操作的对象是服务器端的数据库,并没有修改到本地的DataSet对象,所以当进行删除、修改操作的时候,为了数据一致,在对服务器端的数据库进行删除、修改后,依然要对本地的DataSet对象进行相关操作。根据上面的这些知识,就可以分别得到针对Access 2000和Sql Server 2000数据库进行删除操作的程序代码:
< I > .删除Access 2000数据库中的记录:
Private Sub button4_Click (ByVal sender As Object , _
ByVal e As System.EventArgs) Handles button4.Click
'连接到一个数据库
Dim strCon As String = " Provider = Microsoft.Jet.OLEDB.4.0 ;
Data Source = db.mdb "
Dim myConn As OleDbConnection = New OleDbConnection ( strCon )
myConn.Open ( )
Dim strDele As String = "DELETE FROM person WHERE id= " + t_id.Text
Dim myCommand As OleDbCommand = New OleDbCommand ( strDele , myConn )
'从数据库中删除指定记录
myCommand.ExecuteNonQuery ( )
'从DataSet中删除指定记录
myDataSet.Tables ( "person" ).Rows ( myBind.Position ).Delete ( )
myDataSet.Tables ( "person" ).AcceptChanges ( )
myConn.Close ( )
End Sub
< II > .删除Sql Server 2000数据库中的记录:
Private Sub button4_Click (ByVal sender As Object , _
ByVal e As System.EventArgs) Handles button4.Click
'连接到一个数据库
Dim strCon As String = " Provider = SQLOLEDB.1 ;
Persist Security Info = False ; User ID = sa ;
Initial Catalog = data1 ; Data Source = server1 "
Dim myConn As OleDbConnection = New OleDbConnection ( strCon )
myConn.Open ( )
Dim strDele As String = "DELETE FROM person WHERE id= " + t_id.Text
Dim myCommand As OleDbCommand = New OleDbCommand ( strDele , myConn )
'从数据库中删除指定记录
myCommand.ExecuteNonQuery ( )
'从DataSet中删除指定记录
myDataSet.Tables ( "person" ).Rows ( myBind.Position ).Delete ( )
myDataSet.Tables ( "person" ).AcceptChanges ( )
myConn.Close ( )
End Sub
Private Sub button3_Click (ByVal sender As Object , _
ByVal e As System.EventArgs) Handles button3.Click
Dim i As Integer = myBind.Position
'连接到一个数据库
Dim strCon As String = " Provider = Microsoft.Jet.OLEDB.4.0 ;
Data Source = db.mdb "
Dim myConn As OleDbConnection = New OleDbConnection ( strCon )
myConn.Open ( )
myDataSet.Tables ( "person" ).Rows ( myBind.Position ).BeginEdit ( )
'从数据库中修改指定记录
Dim strUpdt As String = " UPDATE person SET xm = '" _
+ t_xm.Text + "' , xb = '" _
+ t_xb.Text + "' , nl = " _
+ t_nl.Text + " , zip = " _
+ t_books.Text + " WHERE id = " + t_id.Text
Dim myCommand As OleDbCommand = New OleDbCommand ( strUpdt , myConn )
myCommand.ExecuteNonQuery ( )
myDataSet.Tables ( "person" ).Rows ( myBind.Position ).EndEdit ( )
myDataSet.Tables ( "person" ).AcceptChanges ( )
myConn.Close ( )
myBind.Position = i
End Sub
在介绍完上面这二个典型的数据操作后,我们不难发现,其实对数据库进行编程,选取什么样的数据库类型对于程序开发并不是十分主要的,因为在用VB.NET进行数据库开发的时候,对不同数据库,其开发代码的主要区别只在于数据链接的不同,所以在此就不单独介绍用VB.NET对Sql Server 2000进行修改记录操作的代码了。我想这应该不是很难吧。