Visual Basic 访问数据库
应用程序与数据库通信,首先,查询存储在数据库的数据并以用户友好的方式显示,其次,通过插入、修改和删除数据来更新数据库。
ADO.Net(ActiveX Data Objects.Net) 是一个模型,是 .Net framework 的一部分,它用于检索、访问和更新数据。
ADO.Net 对象模型
ADO.Net 对象模型只是通过各种组件的结构化流程。对象模型可以形象地描述为:
存储在数据存储或数据库中的数据通过 data provider(数据提供程序)检索。数据提供程序的各个组件检索应用程序的数据并更新数据。应用程序通过数据集(dataset)或数据读取器(data reader)访问数据。
- dataset 数据集将数据存储在断开连接的缓存中,应用程序从中检索数据。
- data reader 数据读取器以 只读 和 仅转发 模式向应用程序提供数据。
Data Provider(数据提供程序)
Data Provider 用于连接到数据库、执行命令和检索数据、将其存储在数据集中、读取检索到的数据和更新数据库。
ADO.Net 中的数据提供程序由以下四个对象组成:
编号 | 对象 & 描述 |
---|---|
1 | Connection 此组件用于设置与数据源的连接。 |
2 | Command Command 命令是 SQL 语句或存储过程,用于检索、插入、删除或修改数据源中的数据。 |
3 | DataReader DataReader 数据读取器用于以只读和仅转发模式从数据源检索数据。 |
4 | DataAdapter 它是 ADO.Net 的一部分,因为数据通过数据适配器(DataAdapter)与数据库之间进行传输它将数据从数据库检索到数据集并更新数据库对数据集进行更改时,数据库中的更改实际上是由数据适配器完成的。 |
ADO.Net 包含以下不同类型的数据提供程序:
- .Net Framework data provider for SQL Server - 提供对 Microsoft SQL Server 的访问。
- .Net Framework data provider for OLE DB - 提供对使用 OLE DB 公开的数据源的访问。
- .Net Framework data provider for ODBC - 提供对 ODBC 公开的数据源的访问。
- .Net Framework data provider for Oracle - 提供对 Oracle 数据源的访问。
- EntityClient provider - 支持通过实体数据模型(EDM)应用程序访问数据。
DataSet(数据集)
DataSet 是数据的内存表示形式。它是从数据库检索的一组断开连接的缓存记录。当与数据库建立连接时,数据适配器将创建一个数据集并在其中存储数据。检索数据并将其存储在数据集中后,将关闭与数据库的连接。这被称为 "断开连接结构"。数据集用作包含表、行和列的虚拟数据库。
下图显示了数据集对象模型:
使用 DataSet 首先要引入 System.Data 命名空间。
下表描述了所有的 DataSet 组件:
编号 | 组件 & 描述 |
---|---|
1 | DataTableCollection 它包含从数据源检索到的所有表。 |
2 | DataRelationCollection 它包含数据集中表之间的关系和连接。 |
3 | ExtendedProperties 它包含其他信息,如用于检索数据的 SQL 语句、检索时间等。 |
4 | DataTable 它表示数据集的 DataTableCollection 中的一个表它由 DataRow 和 DataColumn 对象组成 DataTable 对象区分大小写 |
5 | DataRelation 它表示数据集的 DataRelationshipCollection 中的关系它用于通过 DataColumn 对象将两个 DataTable 对象相互关联 |
6 | DataRowCollection 它包含 DataTable 中的所有行。 |
7 | DataView 它表示数据表的固定自定义视图,用于排序、筛选、搜索、编辑和导航。 |
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
我们在 Microsoft SQL Server 中有一个名为 Customers 的表,存储在一个名为 testDB 的数据库中。
让我们连接到此数据库。使用以下步骤:
- 选择 TOOLS → Connect to Database
- 在 "Add Connection" 对话框中选择服务器名称和数据库名称。
- 单击 Test Connection 测试连接按钮检查连接是否成功。
- 向窗口添加一个 DataGridView
- 单击 Choose Data Source 选择数据源组合框。
- 单击 Add Project Data Source 添加项目数据源链接
- 这将打开 Data Source Configuration Wizard 数据源配置向导。
- 选择 Database 数据库作为数据源类型。
- 选择 DataSet 作为数据库模型。
- 选择已设置的连接。
- 保存连接字符串。
- 在我们的实例中选择数据库对象 Customers 表,然后单击 Finish 按钮。
- 选择 Preview Data 预览数据链接以查看结果网格中的数据。
- 使用 Microsoft Visual Studio 工具栏上的 开始 按钮运行应用程序时,将显示以下窗口:
实例 2
在本例中,让我们使用代码访问 DataGridView 控件中的数据。
使用以下步骤:
- 在表单中添加 DataGridView 控件和按钮。
- 将按钮控件的文本更改为 'Fill' 填充。
- 双击按钮控件以添加按钮单击事件所需的代码,如下所示:
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 = "cankaoshouce.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 工具栏上的 开始 按钮运行应用程序时,将显示以下窗口:
- 单击 Fill 填充按钮将在数据网格视图控件上显示表格:
创建表,行和列
我们已经讨论过,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 工具栏上的 开始 按钮执行并运行上述代码时,它将显示以下窗口:
- 单击 Fill 填充按钮将在数据网格视图控件上显示表格