📅  最后修改于: 2020-11-19 09:02:42             🧑  作者: Mango
应用程序与数据库进行通信,首先,检索存储在该数据库中的数据并以用户友好的方式呈现它,其次,通过插入,修改和删除数据来更新数据库。
Microsoft ActiveX Data Objects.Net(ADO.Net)是一个模型,是.Net框架的一部分,.Net应用程序使用该模型来检索,访问和更新数据。
ADO.Net对象模型不过是通过各种组件的结构化流程。对象模型可以用图片描述为-
通过数据提供者检索驻留在数据存储或数据库中的数据。数据提供者的各个组件检索应用程序的数据并更新数据。
应用程序通过数据集或数据读取器访问数据。
数据集将数据存储在断开连接的缓存中,应用程序从中检索数据。
数据读取器以只读和仅转发模式向应用程序提供数据。
数据提供程序用于连接数据库,执行命令和检索数据,将其存储在数据集中,读取检索到的数据并更新数据库。
ADO.Net中的数据提供程序由以下四个对象组成-
Sr.No. | Objects & Description |
---|---|
1 |
Connection This component is used to set up a connection with a data source. |
2 |
Command A command is a SQL statement or a stored procedure used to retrieve, insert, delete or modify data in a data source. |
3 |
DataReader Data reader is used to retrieve data from a data source in a read-only and forward-only mode. |
4 |
DataAdapter This 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中包含以下不同类型的数据提供程序
用于SQL Server的.Net Framework数据提供程序-提供对Microsoft SQL Server的访问。
OLE DB的.Net Framework数据提供程序-提供对使用OLE DB公开的数据源的访问。
ODBC的.Net Framework数据提供程序-提供对ODBC公开的数据源的访问。
Oracle的.Net Framework数据提供程序-提供对Oracle数据源的访问。
EntityClient提供程序-允许通过实体数据模型(EDM)应用程序访问数据。
DataSet是数据的内存表示形式。它是从数据库中检索的一组断开连接的缓存记录。与数据库建立连接后,数据适配器将创建数据集并在其中存储数据。检索数据并将其存储在数据集中之后,将关闭与数据库的连接。这称为“断开连接的体系结构”。数据集用作包含表,行和列的虚拟数据库。
下图显示了数据集对象模型-
DataSet类存在于System.Data命名空间中。下表描述了DataSet的所有组件-
Sr.No. | Components & Description |
---|---|
1 |
DataTableCollection It contains all the tables retrieved from the data source. |
2 |
DataRelationCollection It contains relationships and the links between tables in a data set. |
3 |
ExtendedProperties It contains additional information, like the SQL statement for retrieving data, time of retrieval, etc. |
4 |
DataTable It represents a table in the DataTableCollection of a dataset. It consists of the DataRow and DataColumn objects. The DataTable objects are case-sensitive. |
5 |
DataRelation 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. |
6 |
DataRowCollection It contains all the rows in a DataTable. |
7 |
DataView It represents a fixed customized view of a DataTable for sorting, filtering, searching, editing and navigation. |
8 |
PrimaryKey It represents the column that uniquely identifies a row in a DataTable. |
9 |
DataRow 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. |
10 |
DataColumnCollection It represents all the columns in a DataTable. |
11 |
DataColumn It consists of the number of columns that comprise a DataTable. |
.Net Framework提供了两种类型的Connection类-
SqlConnection-设计用于连接到Microsoft SQL Server。
OleDbConnection-设计用于连接各种数据库,例如Microsoft Access和Oracle。
我们在名为testDB的数据库中有一个表,存储在Microsoft SQL Server中,名为Customers。请参考“ SQL Server”教程,以在SQL Server中创建数据库和数据库表。
让我们连接到该数据库。采取以下步骤-
选择工具→连接到数据库
在“添加连接”对话框中选择服务器名称和数据库名称。
中号
单击测试连接按钮以检查连接是否成功。
在窗体上添加一个DataGridView。
单击选择数据源组合框。
单击添加项目数据源链接。
这将打开“数据源配置向导”。
选择数据库作为数据源类型
选择“数据集”作为数据库模型。
选择已建立的连接。
保存连接字符串。
选择数据库对象,即本例中的“客户”表,然后单击“完成”按钮。
选择预览数据链接以查看结果网格中的数据-
使用Microsoft Visual Studio工具栏上的“开始”按钮运行应用程序时,它将显示以下窗口-
在此示例中,让我们使用代码访问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 = "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工具栏上的“开始”按钮执行并运行上述代码后,它将显示以下窗口-
单击“填充”按钮将在数据网格视图控件上显示表-
我们已经讨论过,DataSet组件(如DataTable,DataColumn和DataRow)使我们可以分别创建表,列和行。
以下示例演示了概念-
到目前为止,我们已经使用了计算机中已经存在的表和数据库。在此示例中,我们将创建一个表,在其中添加列,行和数据,并使用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工具栏上的“开始”按钮执行并运行上述代码后,它将显示以下窗口-
单击“填充”按钮将在数据网格视图控件上显示表-