VB.Net - 数据库访问

应用程序与数据库通信,首先是检索存储在那里的数据并以用户友好的方式呈现,其次,通过插入,修改和删除数据来更新数据库.

Microsoft ActiveX Data Objects.Net(ADO.Net)是一个模型,是.Net框架的一部分,由.Net应用程序用于检索,访问和更新数据.

ADO.Net对象模型

ADO.Net对象模型只不过是通过各种组件的结构化流程.对象模型可以用图形描述为 :

ADO.Net objects

通过数据提供程序检索驻留在数据存储或数据库中的数据.数据提供程序的各种组件检索应用程序的数据并更新数据.

应用程序通过数据集或数据读取器访问数据.

  • 数据集将数据存储在断开连接的缓存中,应用程序从中检索数据.

  • 数据阅读器以只读和只进模式向应用程序提供数据.

数据提供程序

数据提供程序用于连接数据库,执行命令和检索数据,将数据存储在数据集中,读取检索到的数据并更新数据库.

ADO.Net中的数据提供程序包含以下四个对象 :

Sr.No.对象&描述
1

连接

此组件用于设置与数据源的连接.

2

命令

命令是用于检索,插入,删除或修改数据源中数据的SQL语句或存储过程.

3

DataReader

数据读取器用于以只读和只进模式从数据源检索数据.

4

DataAdapter

这是ADO.Net工作不可或缺的部分,因为数据通过数据适配器传输到数据库或从数据库传输.它将数据从数据库检索到数据集并更新数据库.当对数据集进行更改时,数据库中的更改实际上由数据适配器完成.

ADO.Net中包含以下不同类型的数据提供者

  • .Net Framework数据SQL Server提供程序 - 提供对Microsoft SQL Server的访问.

  • OLE DB的.Net Framework数据提供程序 - 提供对使用OLE DB公开的数据源的访问.

  • ODBC的.Net Framework数据提供程序 - 提供对ODBC公开的数据源的访问.

  • Oracle的.Net Framework数据提供程序 - 提供对Oracle数据源的访问.

  • EntityClient提供程序 - 允许通过实体数据模型访问数据(EDM)申请.

DataSet

DataSet 是一个内存中的数据表示.它是从数据库中检索的断开连接的缓存记录集.与数据库建立连接后,数据适配器会创建数据集并在其中存储数据.检索数据并将其存储在数据集中后,将关闭与数据库的连接.这被称为"断开连接的架构".数据集用作包含表,行和列的虚拟数据库.

下图显示了数据集对象模型 :

VB.Net数据类

DataSet类出现在 System.Data 中命名空间.下表描述了DataSet的所有组件 :

Sr.No.Components&描述
1

DataTableCollection

它包含从数据源检索到的所有表.

2

DataRelationCollection

它包含数据集中表之间的关系和链接.

3

ExtendedProperties

它包含其他信息,如用于检索数据的SQL语句,检索时间等.

4

DataTable

它表示一个表格DataTableCollection数据集.它由DataRow和DataColumn对象组成. DataTable对象区分大小写.

5

DataRelation

它表示数据集的DataRelationshipCollection中的关系.它用于通过DataColumn对象将两个DataTable对象相互关联.

6

DataRowCollection

它包含a中的所有行DataTable.

7

DataView

它代表DataTable的固定自定义视图,用于排序,过滤,搜索,编辑和导航.

8

PrimaryKey

它表示唯一标识DataTable中行的列.

9

DataRow

它表示DataTable中的一行. DataRow对象及其属性和方法用于检索,评估,插入,删除和更新DataTable中的值. NewRow方法用于创建新行,Add方法向表中添加一行.

10

DataColumnCollection

它代表DataTable中的所有列.

11

DataColumn

它由构成DataTable的列数组成.

连接数据库

.Net Framework提供两种类型的连接类 :

  • SqlConnection : 用于连接到Microsoft SQL Server.

  • OleDbConnection : 设计用于连接各种数据库,如Microsoft Access和Oracle.

示例1

我们在名为customers的Microsoft SQL Server中存储了一个名为Customers的表.有关在SQL Server中创建数据库和数据库表的信息,请参阅"SQL Server"教程.

让我们连接到此数据库.采取以下步骤 :

  • 选择TOOLS → 连接数据库

VB.Net数据库连接示例

  • 在"添加连接"对话框中选择服务器名称和数据库名称.

    M

VB.Net数据库连接

  • 单击"测试连接"按钮以检查连接是否成功.

连接成功

  • 在表单上添加DataGridView.

VB.Net DataGridView

  • 单击"选择数据源"组合框.

  • 点击添加项目数据源链接.

添加项目数据源链接

  • 这将打开数据源配置向导.

  • 选择数据库作为数据源类型

数据源

  • 选择DataSet作为数据库模型.

数据库模型

  • 选择已设置的连接.

VB.Net数据库连接

  • 保存连接字符串.

正在保存连接字符串

  • 在我们的示例中选择数据库对象Customers表,然后单击Finish按钮.

VB.Net数据库连接

  • 选择预览数据链接以查看结果网格中的数据 :

数据预览

使用开始运行应用程序按钮在Microsoft Visual Studio工具栏中可用,它将显示以下窗口 :

数据网格视图中的VB.net数据

示例2

在此示例中,让我们使用代码访问DataGridView控件中的数据.请执行以下步骤 :

  • 在表单中添加DataGridView控件和按钮.

  • 将按钮控件的文本更改为"填充".

  • 双击按钮控件添加所需按钮的Click事件的代码,如下所示 :

Imports System.Data.SqlClient
Public Class Form1
   Private Sub Form1_Load(sender As Object, e As EventArgs) _
   Handles MyBase.Load
      'TODO: This line of code loads data into the 'TestDBDataSet.CUSTOMERS' table.   
      You can move, or remove it, as needed.
      
      Me.CUSTOMERSTableAdapter.Fill(Me.TestDBDataSet.CUSTOMERS)
      ' Set the caption bar text of the form.   
      Me.Text = "IT屋.com"
   End Sub
   
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim connection As SqlConnection = New sqlconnection()
      connection.ConnectionString = "Data Source=KABIR-DESKTOP; _
         Initial Catalog=testDB;Integrated Security=True"
      connection.Open()
      Dim adp As SqlDataAdapter = New SqlDataAdapter _
      ("select * from Customers", connection)
      Dim ds As DataSet = New DataSet()
      adp.Fill(ds)
      DataGridView1.DataSource = ds.Tables(0)
   End Sub
End Class

  • 当使用Microsoft Visual Studio工具栏上的开始按钮执行并运行上述代码时,它将显示以下窗口 :

数据库连接

  • Cli填充按钮显示数据网格视图控件上的表 :

数据库连接

创建表,列和行

我们已经讨论了DataSet组件,如DataTable,DataColumn和DataRow允许我们分别创建表,列和行.

以下示例演示了概念 :

示例3

到目前为止,我们已经使用了计算机中已有的表格和数据库.在这个例子中,我们将创建一个表,向其中添加列,行和数据,并使用DataGridView对象显示表.

采取以下步骤 :

  • 在表单中添加DataGridView控件和一个按钮.

  • 更改按钮控件的文本为'Fill'.

  • 在代码编辑器中添加以下代码.

Public Class Form1
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
      ' Set the caption bar text of the form.   
      Me.Text = "tutorialspont.com"
   End Sub
   
   Private Function CreateDataSet() As DataSet
      'creating a DataSet object for tables
      Dim dataset As DataSet = New DataSet()
      ' creating the student table
      Dim Students As DataTable = CreateStudentTable()
      dataset.Tables.Add(Students)
      Return dataset
   End Function
   
   Private Function CreateStudentTable() As DataTable
      Dim Students As DataTable
      Students = New DataTable("Student")
      ' adding columns
      AddNewColumn(Students, "System.Int32", "StudentID")
      AddNewColumn(Students, "System.String", "StudentName")
      AddNewColumn(Students, "System.String", "StudentCity")
      ' adding rows
      AddNewRow(Students, 1, "Zara Ali", "Kolkata")
      AddNewRow(Students, 2, "Shreya Sharma", "Delhi")
      AddNewRow(Students, 3, "Rini Mukherjee", "Hyderabad")
      AddNewRow(Students, 4, "Sunil Dubey", "Bikaner")
      AddNewRow(Students, 5, "Rajat Mishra", "Patna")
      Return Students
   End Function
   
   Private Sub AddNewColumn(ByRef table As DataTable, _ 
   ByVal columnType As String, ByVal columnName As String)
      Dim column As DataColumn = _ 
         table.Columns.Add(columnName, Type.GetType(columnType))
   End Sub

   'adding data into the table
   Private Sub AddNewRow(ByRef table As DataTable, ByRef id As Integer,_
   ByRef name As String, ByRef city As String)
      Dim newrow As DataRow = table.NewRow()
      newrow("StudentID") = id
      newrow("StudentName") = name
      newrow("StudentCity") = city
      table.Rows.Add(newrow)
   End Sub
   
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim ds As New DataSet
      ds = CreateDataSet()
      DataGridView1.DataSource = ds.Tables("Student")
   End Sub
End Class

  • 执行上述代码并使用Microsoft Visual Studio工具栏上的开始按钮运行时,它将显示以下窗口 :

示例

  • 单击"填充"按钮会在数据网格视图控件中显示表格 :

示例