|
2#
楼主 |
发表于 2004-1-12 17:46:00
|
只看该作者
[转帖]使用ADO.NET解锁Microsoft Access数据
数据表单向导
Visual Studio .NET 数据表单向导允许您快速连接到数据库,并生成简单的用户界面,用于显示数据并与数据进行交互。要使用数据表单向导,请执行以下步骤:
1. 在 Windows 应用程序项目中,在 Project(项目)菜单上,单击 Add Windows Form(添加 Windows 窗体)。
2. 在 Templates(模板)窗格中,单击 Data Form Wizard(数据窗体向导),单击 Open(打开),然后单击 Next(下一步)。
3. 在 Create a new dataset named(创建新数据集)框中,键入 DataSet1,然后单击 Next(下一步)。
4. 选择现有的数据连接或创建新数据连接,然后单击 Next(下一步)。
5. 选择要向 DataSet1 填充的项,然后单击 Next(下一步)。
6. 如果选择多项,请定义各项之间的关系,然后单击 Next(下一步)。
7. 定义要在表单中显示的表和列,然后单击 Next(下一步)。
8. 选择显示样式选项,然后单击 Finish(完成)。
注意:请确保将新数据表单设置为启动表单,方法如下:在 Project(项目)菜单中,单击 Properties(属性)。展开 Common Properties(通用属性)文件夹,单击 General(常规),在 Startup object(启动对象)列表中选择该数据表单,然后单击 OK(确定)。
注意:请确保将 DataSet1 中的数据绑定到数据表单,这可以通过向数据表单的 Load 事件插入以下代码来实现:Me.OleDbDataAdapter1.Fill(objDataSet1)
9. 运行应用程序:在 Debug(调试)菜单上,单击 Run(运行)。
扩展的 ADO.NET 代码示例
为了向您演示更多的 ADO.NET 代码,在本月专栏的最后,我将介绍几个在 ADO.NET 中创建的扩展的代码示例。
使用 DataReader 对象以仅向前移动的、只读的格式访问数据
很多时候,您只是希望简单地浏览数据,而并不需要在数据间来回浏览,也不需要更改数据(我们将此称为“流水数据”)。ADO.NET 的 DataReader 对象是专门为此设计的。下面是我编写的一段示例代码,可以逐个读取连接的数据库中的所有选定数据:
' Visual Basic .NET 代码。
' 控制台应用程序。
' 引用:
' System
' System.Data
' System.XML
Imports System.Data.OleDb ' 用于 OleDb 对象。
Imports Microsoft.VisualBasic.ControlChars ' 用于 CrLf 常量。
Module Module1
Sub Main()
' 创建并初始化 OleDbConnection、OleDbCommand
' 和 OleDbDataReader 对象。
Dim objConn As New _
OleDbConnection("rovider=Microsoft.Jet.OLEDB.4.0;" & _
"User ID=Admin;" & _
"Data Source=C:\Program Files\Microsoft" & _
"Office\Office10\Samples\Northwind.mdb")
objConn.Open()
' 执行命令并将数据读取器附加到
' 所选数据。
Dim objCmd As New OleDbCommand("SELECT * FROM Products", _
objConn)
Dim objReader As OleDbDataReader = objCmd.ExecuteReader
' 读取数据并列出值。
Call ReadData(objReader)
End Sub
Public Sub ReadData(ByVal objReader As OleDbDataReader)
' 目的:列出给定数据读取器的数据值。
' 接受:objReader - 数据读取器。
Dim intField As Integer ' 行中的当前字段。
Dim intColumn As Integer ' 当前列的名称。
Dim blnColumns As Boolean = False ' 列名称是否已
' 列出。
With objReader
' 一次读取一行,直至文件末尾。
Do While .Read = True
For intField = 0 To .FieldCount - 1
' 首先列出列名称。
If blnColumns = False Then
For intColumn = 0 To .FieldCount - 1
If intColumn = .FieldCount - 1 Then
Console.Write(.GetName(intColumn) & _
CrLf)
Else
Console.Write(.GetName(intColumn) & _
", ")
End If
Next intColumn
' 只列出一次列名称。
blnColumns = True
End If
' 列出当前行中每个字段的值。
If intField = .FieldCount - 1 Then
Console.Write(.Item(intField) & CrLf)
Else
Console.Write(.Item(intField) & ", ")
End If
Next intField
Loop
End With
' 暂停,以便用户在控制台窗口中查看数据。
Console.Write("按任意键继续...")
Console.Read()
End Sub
End Module
下面是该代码的工作方式:
● 正如前面的代码示例所示,Imports 代码(例如,Imports System.Data.OleDb)有助于减少访问对象或对象的成员时所需的工作量。类似地,对 OleDbConnection、OleDbCommand 和 OleDbDataReader 对象进行声明和初始化,以分别代表数据库连接、数据记录和记录游标。此代码的真正核心是 ReadData 子例程。
● Do 循环使用 OleDbDataReader 对象的 Read 方法一次读取一行数据,直到该方法返回 False(表示已没有其他数据可读取)。
● OleDbDataReader 对象的 FieldCount 属性返回数据行中数据字段(列)的数目。如果是第一行数据,则在列上调用 OleDbDataReader 对象的 GetName 属性,以 |
|