vb.net的数据库编程|VB.NET的数据库基础编程(1)

更新时间:2017-07-01 来源:编程 点击:

【www.hzclsc.cn--编程】

 面向数据库编程始终是程序设计的一个难点和重点,VB.NET和C#一样自身是不具备对数据库进行操作的功能,他们对数据库的处理是通过.net framework SDK中面向数据库编程的类库和微软的MDAC来实现的。在上一篇文章《探讨VB.Net中的数据绑定》中,我们已经探讨了数据绑定技术,这对于我们下面进行数据库编程是非常重要的。由于数据库编程中所包含的内容十分丰富,这是一篇文章所难以包容的。本文就来探讨一下用VB.NET进行数据库的基础编程,即:用VB.NET如何实现对数据的浏览,如何添加、插入记录,如何删除记录和如何更改记录。

一.程序设计和运行的环境设置:

(1).视窗2000服务器

(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"数据表,数据结构大致如上。

三.VB.NET如何实现对数据记录的浏览:

在完成对窗体中的WinForm组件进行绑定过以后,实现对数据记录的浏览操作的关键就是要找到如何定位数据记录指针的方法。而要实现这种处理就需要用到.Net FrameWork SDK中的名称空间System.Windows.Froms中的BindingManagerBase类了,BindingManagerBase是一个抽象的类,他主要管理对于绑定同一数据表所有绑定对象。BindingManagerBase类中定义了二个属性"position"和"Count",第一个属性是定义当前数据指针,而第二个属性主要是得到当前数据集有多少记录数目。在已经进行完数据绑定后,通过这二个属性的配合使用,实现对数据记录的浏览。那么如何创建一个属于自己的BindingManagerBase对象,这就要使用到另外一个类--BindingContext。其实对于那些属于从Control类中继承对象的BindingManagerBase都是由BindingContext来创建的,下面以Access 2000为操作数据库,创建的一个名称为"myBind"的BindingManagerBase对象的具体例子。


 

   
    "创建一个数据连接
    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" )  



在得到BindingManagerBase对象后,配合使用"position"属性和"Count"属性,就可以实现对数据集的浏览了,下面是对数据集进行"上一条"、"下一条"、"尾记录"、"首记录"。


 

   
  "按钮"尾记录"对象事件程序
  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 



五.VB.NET来修改数据记录:

掌握了SQL语句,并且掌握了上面删除数据记录的实现过程过以后,用VB.NET来修改数据记录就显得并不十分困难了。下面就是以Access 2000为操作数据库实现记录修改的代码,如下:


 

   
  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进行修改记录操作的代码了。我想这应该不是很难吧。

六.VB.NET来插入数据记录:

往数据库中插入记录和修改记录和删除记录基本上差不多,主要也是利用SQL语句,下面是以Access 2000为操作数据库,进行插入记录的代码:


 

   
  Private Sub button2_Click (ByVal sender As Object , _
   ByVal e As System.EventArgs) Handles button2.Click
    "判断所有字段是否添完,添完则执行,反之弹出提示
    If ( t_id.Text <> "" And t_xm.Text <> ""
 And t_xb.Text <> "" And t_nl.Text <> ""
 And t_books.Text <> "" ) Then
      Dim myConn1 As String = " Provider = Microsoft.Jet.OLEDB.4.0 ;
  Data Source = db.mdb"
      Dim myConn As OleDbConnection = New OleDbConnection ( myConn1 )
      myConn.Open ( )
      Dim strInsert As String = " INSERT INTO person ( id , xm ,
  xb , nl , zip ) VALUES ( " & _
      t_id.Text + " , "" & _
      t_xm.Text + "" , "" & _
      t_xb.Text + "" , " & _
      t_nl.Text + " , " & _
      t_books.Text + ")"
      Dim inst As OleDbCommand = New OleDbCommand ( strInsert , myConn )
      inst.ExecuteNonQuery ( )
      myConn.Close ( )
      myDataSet.Tables ( "person" ).Rows ( myBind.Position ).BeginEdit ( )
      myDataSet.Tables ( "person" ).Rows ( myBind.Position ).EndEdit ( )
      myDataSet.Tables ( "person" ).AcceptChanges ( )
    Else
      MessageBox.Show ( "必须填满所有字段值!" , "错误!" )
    End If
End Sub 



同样对Sql Server 2000数据库进行插入记录操作和Access 2000数据库插入记录操作的差异也只在于不同的数据链接,具体的代码可以参考"删除数据记录"中的代码,在这里就不提供了。

本文来源:http://www.hzclsc.cn/ruanjianzixun/125.html

为您推荐

制作电音的软件|电音创作软件KORG将于明年登录Switch

如果你经常关注我们对任天堂Switch的报道,你可能还记得有家公司正在为Switch制作学习编程的软件,接下来要告诉各位,Switch不单可以用来编程,而且还可以作曲!日本知名的电子音乐作曲工作站软件游戏资讯

2020-12-05 17:04:48   做电音的软件   电音软件手机版  

【支付宝小程序在哪里找】支付宝小程序开发者公测地址 支付宝小程序申请公测网址

支付宝小程序目前已经开始公测了,为大家带来支付宝小程序开发者公测地址,支付宝小程序是手机应用嵌入支付宝客户端的一种方法,下面是支付宝小程序申请公测网址! 支付宝小程序开发者公测地址 特色能力开发服务成编程开发

2020-11-22 11:04:37   支付宝小程序怎么建立   支付宝小程序怎么开发  

[c罗]c++ vector用法详解 c++ vector用法总结

c++ vector是在c++中开发过程中c++ vector作为一个十分有用的容器,许多朋友还不是很清楚c++ vector用法,不知道c++ vector到底有什么优秀的用法,不用着急一起来看看编程开发

2020-11-22 11:04:37   pcba   c盘满了怎么清理  

【eclipse如何导出项目】eclipse怎么导出项目 eclipse导出项目教程

eclipse作为用户量十分大的编程开发软件,有许多新手用户朋友或者刚开始接触这款软件的朋友经常会出现在使用eclipse的时候不知道该怎么导出已经读取到软件中的项目,其实很简单,一起来看看ecli教你一招

2020-11-10 07:04:06   eclipse怎么导入项目   eclipse怎么打开项目  

jdk环境变量配置win10|JDK环境变量配置WIN7 WIN7JDK环境变量配置教程

JDK怎么进行环境变量配置一直是困扰着许多入门编程员的问题,许多用户朋友们如果重新换了一台设备,很容易出现不知道怎么进行环境配置的情况,不用担心,小编为大家带来了详细的在WIN7系统下如果进行JDK教你一招

2020-11-07 11:05:38   jdk安装与环境变量配置   安装jdk并配置环境变量