在线文档教程

VB.Net - 数据库访问

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

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

ADO.Net对象模型

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

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

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

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

数据提供程序

数据提供程序用于连接到数据库、 执行命令和检索数据,将其存储在一个数据集,阅读检索到的数据和更新数据库。

在 ADO.Net 数据提供程序包括以下四个对象︰

SN对象和说明
1Connection This component is used to set up a connection with a data source.该组件被用来建立与数据源的连接。
2Command A command is a SQL statement or a stored procedure used to retrieve, insert, delete or modify data in a data source.命令是用于检索,插入,删除或修改数据源中的数据的SQL语句或存储过程。
3DataReaderData reader is used to retrieve data from a data source in a read-only and forward-only mode.数据读取器用于以只读和仅转发模式从数据源检索数据。
4DataAdapterThis is integral to the working of ADO.Net since data is transferred to and from a database through a data adapter. It retrieves data from a database into a dataset and updates the database. When changes are made to the dataset, the changes in the database are actually done by the data adapter.这是ADO.Net的工作的组成部分,因为数据通过数据适配器传输到数据库和从数据库传输。 它将数据从数据库检索到数据集并更新数据库。 当对数据集进行更改时,数据库中的更改实际上由数据适配器完成。

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

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

数据集

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

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

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

SN组件及说明
1DataTableCollectionIt contains all the tables retrieved from the data source.它包含了从数据源中检索的所有表。
2DataRelationCollection It contains relationships and the links between tables in a data set.它包含数据集中的表之间的关系和链接。
3ExtendedProperties It contains additional information, like the SQL statement for retrieving data, time of retrieval, etc.它包含的其他信息,例如用于检索数据的SQL语句,检索的时间等
4DataTable It represents a table in the DataTableCollection of a dataset. It consists of the DataRow and DataColumn objects. The DataTable objects are case-sensitive.它表示数据集的DataTableCollection中的表。它由DataRow和DataColumn对象组成。 DataTable对象区分大小写。
5DataRelation It represents a relationship in the DataRelationshipCollection of the dataset. It is used to relate two DataTable objects to each other through the DataColumn objects.它表示数据集的DataRelationshipCollection中的关系。它用于通过DataColumn对象将两个DataTable对象相互关联。
6DataRowCollection It contains all the rows in a DataTable.它包含DataTable中的所有行。
7DataView It represents a fixed customized view of a DataTable for sorting, filtering, searching, editing and navigation.它表示用于排序,过滤,搜索,编辑和导航的DataTable的固定自定义视图。
8PrimaryKey It represents the column that uniquely identifies a row in a DataTable.它表示唯一标识DataTable中某一行的列。
9DataRow It represents a row in the DataTable. The DataRow object and its properties and methods are used to retrieve, evaluate, insert, delete, and update values in the DataTable. The NewRow method is used to create a new row and the Add method adds a row to the table.它表示DataTable中的一行。 DataRow对象及其属性和方法用于检索,评估,插入,删除和更新DataTable中的值。 NewRow方法用于创建一个新行,Add方法向表中添加一行。
10DataColumnCollection It represents all the columns in a DataTable.它表示DataTable中的所有列。
11DataColumn It consists of the number of columns that comprise a DataTable.它由组成DataTable的列数组成。

连接到数据库

.Net框架提供两种类型的Connection类:

  • SqlConnection -设计用于连接到Microsoft SQL Server。

示例1

我们有一个表存储在名为testDB的数据库中的名为Customers的Microsoft SQL Server中。 有关在SQL Server中创建数据库和数据库表的信息,请参考“SQL Server”教程。

让我们连接到此数据库。 执行以下步骤:

  • 选择工具 - >连接到数据库

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

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

  • 在表单上添加一个DataGridView。

  • 单击选择数据源组合框。

  • 这将打开“数据源配置向导”。

  • 选择的DataSet作为数据库模型。

  • 选择已设置的连接。

  • 保存连接字符串。

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

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

当使用Microsoft Visual Studio工具栏上的“开始”按钮运行应用程序时,将显示以下窗口:

示例2

在这个例子中,让我们使用代码访问DataGridView控件中的数据。 执行以下步骤:

  • 在窗体中添加一个DataGridView控件和一个按钮。

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 = "tutorialspoint.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工具栏上的“开始”按钮执行并运行上述代码时,将显示以下窗口:

单击“填充”按钮可显示数据网格视图控件上的表:

创建表,列和行

我们已经讨论过,像DataTable,DataColumn和DataRow这样的DataSet组件允许我们分别创建表,列和行。

下面的例子演示了这个概念:

示例3

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

执行以下步骤:

  • 在窗体中添加一个DataGridView控件和一个按钮。

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工具栏上的“开始”按钮执行并运行上述代码时,将显示以下窗口:

单击“填充”按钮可显示数据网格视图控件上的表: