收藏 分享(赏)

VBNET数据库编程基础教程.doc

上传人:精品资料 文档编号:11037483 上传时间:2020-02-03 格式:DOC 页数:20 大小:103KB
下载 相关 举报
VBNET数据库编程基础教程.doc_第1页
第1页 / 共20页
VBNET数据库编程基础教程.doc_第2页
第2页 / 共20页
VBNET数据库编程基础教程.doc_第3页
第3页 / 共20页
VBNET数据库编程基础教程.doc_第4页
第4页 / 共20页
VBNET数据库编程基础教程.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、VBNET 数据库编程基础教程众所周知,VB.NET 自身并不具备对数据库进行操作的功能,它对数据库的处理是通过.NET FrameWork SDK 中面向数据库编程的类库和微软的 MDAC 来实现的。其中,ADO.NET 又是.NET FrameWork SDK 中重要的组成部分。要了解 VB.NET 的数据库编程,首先要明白 ADO.NET 的工作原理以及相关的对象、方法、属性。本文将结合具体实例为你简单介绍 ADO.NET 数据库访问对象以及 VB.NET 数据库编程基本方法。一、ADO.NET 数据库访问对象(一)ADO.NET 简介ADO.NET 是由微软 Microsoft Act

2、iveX Data Object(ADO)升级发展而来的。是在.NET 中创建分布式数据共享程序的开发接口。 ADO.NET 的数据存取 API提供两种数据访问方式,分别用来识别并处理两种类型的数据源,即 SQL Server7.0(及更高的版本)和可以通过 OLE DB 进行访问的其他数据源。为此 ADO.NET 中包含了两个类库,System.Data.SQL 库可以直接连接到 SQL Server 的数据,System.Data.ADO 库可以用于其他通过 OLE DB 进行访问的数据源。如 Access 数据。(二)ADO.NET 的名称空间ADO.NET 是围绕 System.Dat

3、a 基本名称空间设计,其他名称空间都是从 System.Data 派生而来。它们使得 ADO.NET 不仅访问 DataBase 中的数据,而且可以访问支持 OLE DB 的数据源。当我们讨论 ADO.NET 时,实际讨论的是 System.Data 和 System.Data.OleDb名称空间。这两个空间的所有类几乎都可以支持所有类型的数据源中的数据。这里我们讨论与后文实例有关的类。即 OleDbconnection、OleDbDataAdapter、DataSet 和 DataView。上面列举的类中没有 OleDb 前缀的,派生自 System.Data 空间,有此前缀的派生自 Sys

4、tem.Data.OleDb 空间。在使用中,如果要引用 OleDb 前缀的类,必须导入 System.Data.OleDb 名称空间。语法如下:Imports System.Data.OleDb使用没有此前缀的类必须导入 System.Data 名称空间。语法如下:Imports System.Data1.OleDbConnection 类OleDbConnection 类提供了一个数据源连接。这个类的构造函数接受一个可选参数,称为连接字符串。(1)连接字符串:连接字符串本身由下表中列出的参数构成。(图) 我们来看一下如何在连接字符串上使用参数来初始化一个连接对象。Dim objconnec

5、ttion as OleDbConnection=New OleDbConnection(Provider=SQLOLEDB;Initial Catalog=pubs;Password=1234;)上面的连接字符串使用 SQLOLEDB 提供者访问 SQL Server 数据库。Data Source 参数指定数据库位于本地机器上,Initial Catalog 参数表示我们要访问的数据库名称是“pubs”。(2)打开和关闭数据库:一旦用上面的方法初始化了一个连接对象,就可以调用 OleDbConnection 类的任何方法来操作数据。其中打开与关闭数据库方法是任何操作的基本环节。打开数据库:

6、objConnection.Open()关闭数据库:objConnection.Close()OleDbConnection 类的其他方法与属性请查阅相关手册。2.OleDbDataAdapter 类OleDbDataAdapter 类可以在所有 OLE DB 数据源中读写数据,并且可以设置为包含要执行的 SQL 语句或者存储过程名。OleDbDataAdapter 类并不真正存储任何数据,而是作为 DataSet 类和数据库之间的桥梁。(1)SelectCommand 属性:要从数据库中读取数据,必须首先设置 OleDbDataAdapter 类的 SelectCommand 属性。该属性用

7、来指定选取哪些数据以及如何选取数据。(2)Fill 方法:Fill 方法用来完成向 DataSet 对象中填充由 OleDbDataAdapter 对象从数据库中检索的数据。其语法如下:Fill(DataSet,String)其中,DataSet 参数用于指定一个有效的 DataSet 对象,将用数据进行填充;String 参数指定了用于表映射的表名称。(3)DataView 类:DataView 类一般用于从 DataSet 类中排序、过滤、查找、编辑和导航数据。与 DataSet 一样其内部数据使用的是 DataTable 对象。 DataView 类是 DataTable 对象的一个自定

8、义视图。同时 DataView 中的数据又独立于 DataSet 中 DataTable 包含的数据,所以可以对数据进行操作而又不会影响 DataSet 中的数据。其主要方法与属性如下:Sort 方法:对 DataView 包含的数据进行排序。语法如下:objDataView.Sort = 排序条件Find 方法:在 DataView 搜索指定的数据行。语法如下:rec=objDataView.Find(指定条件 )注意:Find 方法查找不区分大小写;如果找到一个匹配数据,Find 方法将返回其在 DataView 中记录位置,否则返回-1。有关 DataView 的其他方法与属性请查阅相关

9、手册。(三)ADO.NET 的核心组件ADO.NET 的核心组件主要包括:Connections:连接管理数据库事务。Commands:向数据库发送的操作命令。DataReaders:直接读取流数据。DataSets 和 DataSetCommands:处理内存镜像数据。ADO.NET 首先用 Connections 对象在 Web 页面和数据库之间建立连接,然后通过 Commands 向数据库提供者发出操作命令,使操作结果以流数据的形式返回连接。再通过 DataReaders 快速读取流数据,保存数据到 DataSets 对象。最后再由 DataSetCommands 对象对数据进行集中访问

10、和操作。1.Connections 对象.NET 框架中共提供了两个 Connections 对象:SQLConnection 和 ADOConnection。应用 Connections 对象时,先用 Connections 对象建立连接,然后调用Open 方法来打开连接。通常建立链接时,要提供一些信息,如数据库所在位置、数据库名称、用户账号、密码等相关信息,Connection 对象提供了一些常用属性用来进行此类设置。(图)SQLConnection 的具体操作方法是:Dim myConnection as string = server=localhost;uid=liuguo;pwd=

11、12345;database=northwindDim myConn As OleDbConnection = New OleDbConnection(myConnection)ADOConnection 的具体操作方法是:Dim myConnection As string localhost;uid=liuguo;pwd=12345;Intial catalog=Northwind;Dim myConn As OleDbConnetion = New OleDbConnection(myConnection)MyConn.Open()2.Commands 对象当链接到数据库之后,可以使用

12、Command 对象对数据库进行操作,如进行数据添加、删除、修改等操作。一个命令(Command)可以用典型的 SQL 语句来表达,包括执行选择查询(Select Query)来返回记录集,执行行动查询(Action Query)来更新 (增加、编辑或删除)数据库的记录,或者创建并修改数据库的表结构。当然命令(Command) 也可以传递参数并返回值。 Command 可以被明确的界定,或者调用数据库中的存储过程。 Dim objCmd as New OleDbCommand(SELECT * From users, objConn)以上语句建立 Command,根据习惯,也可以使用以下方法:

13、Dim objCmd as New OleDbCommand()objCmd.Connection = objConnobjCmd.CommandText = SELECT * FROM users 3.DataReaders 对象DataReaders 是专门用来读取数据的对象,这个对象除了读数据以外,不能做其他任何数据库操作。Dim objReader as OleDbDataReaderobjReader = objCmd.ExecuteReaderWhile objReader.ReadResponse.Write(objReader.GetString(0) Data Source

14、= e:My Documentsdb1.mdbDim myConn As OleDbConnection = New OleDbConnection()myConn.ConnectionString = ConnectionStringDim strCom As String = SELECT * FROM student 创建一个 DataSetmyDataSet = New DataSet()myConn.Open()用 OleDbDataAdapter 得到一个数据集Dim myCommand As OleDbDataAdapter = New OleDbDataAdapter(strC

15、om, myConn)把 Dataset 绑定 student 数据表myCommand.Fill(myDataSet, student)关闭此 OleDbConnectionmyConn.Close()End Sub初始化窗体中的组件Private Sub InitializeComponent()(省略部分自动生成代码)End Sub将各个文本框控件绑定到数据库的各个字段。Private Sub Button1_Click(ByVal sender As Object, _ByVal e As System.EventArgs) Handles Button1.ClickTxtStuID.

16、DataBindings.Add(New Binding(Text, Me.myDataSet, student.StuID)TxtStuName.DataBindings.Add(New Binding(Text, Me.myDataSet, student.StuName)TxtStuSex.DataBindings.Add(New Binding(Text, Me.myDataSet, student.StuSex)TxtStuBorn.DataBindings.Add(New Binding(Text, Me.myDataSet, student.StuBorn)TxtStuCore.

17、DataBindings.Add(New Binding(Text, Me.myDataSet, student.StuCore)End SubEnd ClassModule Module1Sub Main()Application.Run(New Form1()End SubEnd Module编译后运行程序,看看是不是与上面介绍的实例运行结果相同。在上面的代码中,我们新建了一个 GetConnected()过程,用于建立连接,打开数据库。在用代码实现数据绑定或者对数据库进行任何操作前,就必须要先建立连接,打开数据库,程序运行结束后再关闭数据连接。在 Button1_Click 过程中,我们

18、把“TextBox”控件绑定到数据集 myDataSet 中“student”的各个字段上。程序运行后,点击“TextBox 数据绑定”按纽,程序就会用 myDataSet 中“student”中的数据来自动填充文本框。2.绑定到 Label 控件有了上面的内容做基础,再来讨论如何把数据集绑定到 Label 控件上就显得很简单了。把数据绑定到 Label 控件的方法与绑定到 TextBox 控件的方法大同小异。此处不再详细讲解,只给出代码实现绑定到 Label 控件的核心部分代码。Private Sub Button1_Click (ByVal sender As Object , _ByVa

19、l e As System.EventArgs ) Handles Button1.Click把 student 表的 StuName 字段绑定到 Label1 的 Text 属性上。Label1.DataBindings.Add ( New Binding ( Text , Me.myDataSet , student.StuName ) ) End Sub3.绑定到 ComboBox 控件上面介绍的是对组件的简单数据绑定,对组件的复杂数据绑定和它有所区别,也有所相同,具体如下: (1)要对 ComboBox 组件实现数据绑定,首先也是要打开数据表,得到数据集。这和上面 TextBox 组件

20、的代码大致一样,在此略过。 (2)实现数据绑定:设定了 ComboBox 组件的三个属性就可以实现数据绑定了,这三个属性是“DataSource”、“DisplayMember”、 “ValueMember”。其中 DataSource 表示指定的数据集;DisplayMember 表示 ComboBox 组件显示的字段值; ValueMember 表示 ComboBox 组件选择后的值。这三个属性的具体使用方法如下:ComboBox1.DataSource = Me.myDataSetComboBox1.DisplayMember = studnet.StuNameComboBox1.Val

21、ueMember = studnet.StuName 下面我们就来看看把数据集绑定到 ComboBox 控件的核心代码:Private Sub Button1_Click ( ByVal sender As Object , _ByVal e As System.EventArgs ) Handles Button1.ClickComboBox1.DataSource = Me.myDataSetComboBox1.DisplayMember = student.StuNameComboBox1.ValueMember = student.StuName End Sub注意:对 ComboBo

22、x 控件进行数据绑定的方法同样适用于 ListBox 控件,因此关于 LisBox 控件数据绑定方法本文将不再介绍。需要者请参阅 ComboBox 相关内容。三、数据库简单操作前面介绍了 ADO.NET 基础,以及 ADO.NET 与 Windows 窗体控件的绑定方法。但是,对于数据库编程我们更想了解的还是如何增加记录,删除记录,更新记录等数据库记录的操作方法。这里我们将以一个具体的实例为大家介绍这些操作方法。在图 3 中,有 btnFirst(第一个记录 ),btnEnd(最后一条记录),btnAdd(增加记录),btnDel(删除记录),btnEdit( 修改记录) 控件。用代码形式打开

23、数据并在 frmtest_load 中把数据绑定给 TextBox 控件。此处给出源代码:打开数据库Public Sub OpenData()创建一个 OleDbConnectionDim ConnectionString As String = Provider = Microsoft.Jet.OLEDB.4.0; Data Source = e:My Documentsdb1.mdbDim myConn As OleDbConnection = New OleDbConnection()myConn.ConnectionString = ConnectionStringDim strCom

24、 As String = SELECT * FROM student 创建一个 DataSetmyDataSet = New DataSet()myConn.Open()用 OleDbDataAdapter 得到一个数据集Dim myCommand As OleDbDataAdapter = New OleDbDataAdapter(strCom, myConn)把 Dataset 绑定 student 数据表myCommand.Fill(myDataSet, student)关闭此 OleDbConnectionmyConn.Close()End Sub绑定数据到 TextBox 控件Pri

25、vate Sub frmtest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadtxtStuID.DataBindings.Add(New Binding(Text, Me.myDataSet, student.StuID)txtStuName.DataBindings.Add(New Binding(Text, Me.myDataSet, student.StuName)txtStuSex.DataBindings.Add(New Binding(Text, Me.myD

26、ataSet, student.StuSex)txtStuBorn.DataBindings.Add(New Binding(Text, Me.myDataSet, student.StuBorn)txtStuCore.DataBindings.Add(New Binding(Text, Me.myDataSet, student.StuCore)End Sub完成以上步骤后,我们就可以通过编程对数据库进行各作操作了。1.实现对数据记录的浏览在完成对窗体中的 WinForm 组件进行绑定后,实现对数据记录的浏览操作的关键就是要找到如何定位数据记录指针的方法。而要实现这种处理就需要用到. NET

27、 FrameWork SDK 中的名称空间 System.Windows.Froms 中的 BindingManagerBase 类。BindingManagerBase 是一个抽象的类,主要用于管理同一数据表所有绑定对象。BindingManagerBase 类中定义了二个属性 “position”和“Count”,第一个属性是定义当前数据指针,而第二个属性主要是得到当前数据集有多少记录数目。在已经进行完数据绑定后,通过这两个属性配合使用,实现对数据记录的浏览。(1)向上翻阅一条记录:双击“上一条 ”按钮,在代码窗中输入以下代码:Private Sub btnPrevious_Click(B

28、yVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious_.ClickMe.BindingContext(myDataSet, student).Position -= 1End Sub(2)向下翻阅一条记录:双击“下一条 ”按钮在代码窗中输入以下代码:Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesbtnNext.ClickMe.BindingContext

29、(myDataSet, student).Position += 1End Sub(3)翻到最后一条记录:双击“最后一条记录” 按钮,在代码窗中输入以下代码:Private Sub btnEnd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnd.ClickMe.BindingContext(myDataSet, student).Position = Me.BindingContext(myDataSet, student).Count - 1End Sub(4)翻阅到第一条记录:双

30、击“第一条记录” 按钮,在代码窗中输入以下代码:Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.ClickMe.BindingContext(myDataSet, student).Position = 0End Sub说明:为了代码书写方便,我们可以先定义一个 BindingManagerBase 对象 myBind,如 myBind = Me.BindingContext (myDataSet, student ),于是以上各句代码

31、均可以简写成:向上翻阅一条记录:myBind.Position = myBind.Position - 1向下翻阅一条记录:myBind.Position = myBind.Position + 1翻阅到最后一条记录:myBind.Position=myBind.count - 1翻阅到第一条记录:myBind.Position = 02.删除数据记录双击“删除记录” 按钮,在代码窗中输入以下代码:Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDel

32、.ClickDim ConnectionString As String = Provider = Microsoft.Jet.OLEDB.4.0; Data Source = e:My Documentsdb1.mdbDim myConn As OleDbConnection = New OleDbConnection()myConn.ConnectionString = ConnectionStringmyConn.Open()Dim strDele As String = DELETE From student WHERE StuID = + txtStuID.Text + Dim my

33、Command As OleDbCommand = New OleDbCommand(strDele, myConn)myCommand.ExecuteNonQuery() myDataSet.Tables(student).Rows(Me.BindingContext(myDataSet, student).Position).Delete()myDataSet.Tables(student).AcceptChanges()10.myConn.Close()End Sub前面四行代码我们已经非常熟悉,目的是建立与数据据的连接并打开数据库。第 6 行代码我们建立一个 SQL 查询,用来查询数据

34、表中 StuID 字段值等于 TxtStuID.Text 输入值的所有记录。并在第 7 行代码中将查询结果建立一个新的 OleDbCommand 对象,用来指定要删除的记录。第 8 行代码是从数据库中删除指定的记录,第 9 行代码是从 myDataSet 中删除记录。前者是物理上删除记录,如果去掉第 8 行代码运行程序你就会发现,记录只是在当前操作中被删除了,在数据库中依然存在。其中第 6 行代码中定义的 SQL 查询条件读者可以根据需要自行指定。需要说明的是,由于我们在创建数据表时,指定 StuID 字段的类型为 Text 类型,因此在书写 SQL 语名时要在“”号前加上单引号,具体格式请参

35、照第 6 行代码。如果StuID 字段类型为数字型,那么第 6 行正确写法应该为:Dim strDele As String = DELETE From student WHERE StuID = + txtStuID.Text 3.修改数据记录修改数据的方法有很多,本文中我们将以采用 SQL 语言来修改数据记录为例详细介绍一下如何修改数据记录。下面我们先看看程序代码:Dim ConnectionString As String = Provider = Microsoft.Jet.OLEDB.4.0; Data Source = e:My Documentsdb1.mdbDim myConn

36、 As OleDbConnection = New OleDbConnection()myConn.ConnectionString = ConnectionStringmyConn.Open()以上代码用来连接数据源myDataSet.Tables(student).Rows(Me.BindingContext(myDataSet, student).Position).BeginEdit()利用 SQL 语句创建数据更新集合Dim StrUpdate As String = Update student SET StuName= + txtStuName.Text + ,StuSex= +

37、 txtStuSex.Text + ,StuBorn= + txtStuBorn.Text + ,StuCore= + txtStuCore.Text + WHERE StuID= + txtStuID.Text + 利用 SQL 结果创建新的 OleDbCommand 对象Dim myCommand As OleDbCommand = New OleDbCommand(StrUpdate, myConn)myCommand.ExecuteNonQuery()myDataSet.Tables(student).Rows(Me.BindingContext(myDataSet, student)

38、.Position).EndEdit()myDataSet.Tables(student).AcceptChanges()myConn.Close()MsgBox(数据修改完成!)上述代码中我们采用 SQL 语言中的 Update 语名来更新记录,对各个 TextBox中的值修改后更新到数据库。其中重要语句就是 SQL 语句的编写。如果你有不明白的地方,请参阅 SQL 相关资料。代码中我们同时还利用了 BeginEdit()与EndEdit()方法,任何从数据的修改都必须在这两个方法之间进行。前者是数据修改的入口,后者则是完成将数据写入数据库的工作。4.增加数据记录增加数据记录与修改数据在实现

39、方法上有很多相同之处。在下面的实例中我们利用 SQL 的 Insert 语句在指定位置插入一条记录,把更新到数据库。如果你想在数据表最后增加一条记录,只需要将数据记录指针指向数据表末尾就行了。Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.ClickDim ConnectionString As String = Provider = Microsoft.Jet.OLEDB.4.0; Data Source = e:My Documentsdb

40、1.mdbDim myConn As OleDbConnection = New OleDbConnection()myConn.ConnectionString = ConnectionStringmyConn.Open()Dim StrAdd As String = insert into student (Stuid,StuName,StuSex,StuBorn,StuCore) values( + txtStuID.Text + , + txtStuName.Text + , + txtStuSex.Text + , + txtStuBorn.Text + , + txtStuCore

41、.Text + )Debug.Write(StrAdd)Dim myCommand As OleDbCommand = New OleDbCommand(StrAdd, myConn)myCommand.ExecuteNonQuery()myConn.Close()myDataSet.Tables(student).Rows(Me.BindingContext(myDataSet, student).Position).BeginEdit()myDataSet.Tables(student).Rows(Me.BindingContext(myDataSet, student).Position).EndEdit()myDataSet.Tables(student).AcceptChanges()MsgBox(数据增加完成!)End Sub有了前面几种基本操作方法的代码分析后,这段代码相信不难理解。大家需要关注的还是 SQL 语句是如何实现数据记录增加的。这种方法具有一定的通行性。完成上述设计后我们来看看整个程序的运行结果。按下 F5 键运行程序即可。本文中所有代码均在 Windows XP+VB.NET 环境下调试通过。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报