visual basic 2010 ado .net 資料庫查詢

18
Visual Basic 2010 ADO .NET 資資資資資 Ren-Jie Wang, 資 資 資 , Ph.D. [email protected] 資資資資 : http://home.scs.nutc.edu.tw/rjwang/

Upload: kelda

Post on 14-Jan-2016

80 views

Category:

Documents


1 download

DESCRIPTION

Visual Basic 2010 ADO .NET 資料庫查詢. Ren-Jie Wang, 王 仁 傑 , Ph.D. [email protected] 課程網頁 : http://home.scs.nutc.edu.tw/rjwang/. 如何引用 ADO .NET 命名空間. .NET Framework 架構中是由所用資料庫 ( 資料來源 ) 來決定使用 SQL .NET Data Provider 或是 OLE DB .NET Data Provider 。 兩者 .NET Data Provider 分屬不同的命名空間 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Visual Basic 2010 ADO .NET 資料庫查詢

Visual Basic 2010ADO .NET 資料庫查詢

Ren-Jie Wang, 王 仁 傑 , Ph.D. [email protected]

課程網頁 : http://home.scs.nutc.edu.tw/rjwang/

Page 2: Visual Basic 2010 ADO .NET 資料庫查詢

如何引用 ADO .NET 命名空間

.NET Framework 架構中是由所用資料庫 ( 資料來源 ) 來決定使用 SQL .NET Data Provider 或是 OLE DB .NET

Data Provider 。 兩者 .NET Data Provider 分屬不同的命名空間

需使用 Imports 敘述來引用對應 ADO .NET 的命名空間。 才能在撰寫程式時,使用簡潔 ADO .NET 物件來存取資料庫。

Page 3: Visual Basic 2010 ADO .NET 資料庫查詢

System.Data.OleDb

此命名空間允許連接到 OLE DB 這類型資料來源、接受 SQL 查詢和透過 Fill 方法,將資料填入 DataSet 。

資料來源包括: Access 、 Excel 、 SQL Server 7.0 以上版本的資料庫…等。

在程式中用這類型資料庫,需在程式開頭用 Imports 敘述引用此命名空間,寫法:

Imports System.Data.OleDb ‘ 引用 OLE DB 資料來源的物件 在 OLE DB .NET Data Provider 下,所使用的 ADO .NET 物件名稱

前面需加上 OleDb ,如:OleDbConnection 、 OleDbCommand 、 OleDbDataReader… 等。

Page 4: Visual Basic 2010 ADO .NET 資料庫查詢

System.Data.SqlClient

此命名空間允許直接連接 SQL Server 7.0( 含 ) 以上版本的資料庫。

在程式中用此命名空間,需在程式開頭用 Imports 敘述含入 System.Data.SqlClient ,寫法:

Imports System.Data.SqlClient 在 SQL .NET Data Provider 下,所用的 ADO .NET 物件名稱

的前面必須加上 Sql 。 如:

SqlConnection 、 SqlCommand 、 SqlDataReader … 等

Page 5: Visual Basic 2010 ADO .NET 資料庫查詢

下表即是 ADO .NET 在各所屬命名空間中各類別命名對照表:

Page 6: Visual Basic 2010 ADO .NET 資料庫查詢

.NET Framework Data Provider 與 DataSet 之間的架構

Page 7: Visual Basic 2010 ADO .NET 資料庫查詢

如何使用 DataSet 物件 DataSet 物件是一個記憶體中的資料庫,它採用離線存取資料庫的方

式。 DataSet 中的資料更新完畢後,再重新和 SQL Server 資料庫進行連

線,將資料全部一次更新到 SQL Server 資料庫中。 DataSet 執行效率佳,適用於多用戶端資料存取,但此種方式須耗費

較多的記憶體空間。 DataSet 中可以包含一個以上的 DataTable 物件, DataTable 物件相

當於主記憶體中的一個資料表。 DataAdapter 物件是資料庫和 DataSet 之間溝通的橋

樑。 DataAdapter 物件使用 Command 物件執行 SQL 命令,將由資料庫所擷取的資料送到 DataSet ,此時便可使用 DataTable 物件來存取資料表,將 DataSet 裡面的資料經過處理後再一次寫回資料庫。

Page 8: Visual Basic 2010 ADO .NET 資料庫查詢

如何建立 DataSet 物件讀取資料表記錄

Step1: 建立 ds 屬於 DataSet 物件。Dim ds As New DataSet()

Step2: 建立 da 屬於 OleDbDataAdapter 物件,並指定 SQL 查詢的是「 data1 」資料表,要連接的資料來源為應用程式組態檔 app.config 中的連線字串指定的資料庫。

Dim da As New OleDbDataAdapter(“SELECT * FROM data1”, My.Settings. 連線字串名稱 )

Step3: 使用 DataAdapter 物件的 Fill 方法,將查詢資料的結果放到DataSet 物件中。此時 DataSet 物件中即會產生一個 DataTable 物件,該DataTable 物件會以資料表的方式存放查詢資料的結果。

da.Fill(ds, "data1")

Step4: 建立 dt 屬於 DataTable 物件 , 並由 DataSet 物件取出資料表Dim dt As DataTable = ds.Tables("data1")

Page 9: Visual Basic 2010 ADO .NET 資料庫查詢

如何由 DataTable 物件讀取資料表記錄

DataSet 物件模型可以了解,在 DataSet 下包含很多子類別,如 DataTable 、 DataColumn 、 DataRow… 等。

DataSet 是記憶體的資料庫可用來存放多個 DataTable 物件。 DataTable 可用來存放資料表的多筆記錄資料、每一筆記錄

稱為 DataRow 、 DataRow 的集合稱為 DataRowCollection 。 DataTable 包含 DataColumnCollection 集合,集合中的項目

稱為 DataColumn , DataColumn 用來表示每一個欄位的資訊與資料型別。

Page 10: Visual Basic 2010 ADO .NET 資料庫查詢

DataTable 物件

Page 11: Visual Basic 2010 ADO .NET 資料庫查詢

DataTable 物件

1. 取得 DataTable 物件 dt 的欄位總數。 dt.Columns.Count

2. 取得 DataTable 物件 dt 的第 j 個的欄位名稱 ( 註標起始值為 0) 。 dt.Columns(j).ColumnName

3. 取得 DataTable 物件 dt 的記錄資料總筆數。 dt.Rows.Count

4. 取得 DataTable 物件 dt 的第 i 列某一個欄位的資料內容。 dt.Rows(i)(" 欄位名稱“ )

5. 取得 DataTable 物件 dt 的第 i 列第 j 欄的資料內容,註標起始值為 0 。

dt.Rows(i)(j)

Page 12: Visual Basic 2010 ADO .NET 資料庫查詢
Page 13: Visual Basic 2010 ADO .NET 資料庫查詢

如何由 DataTable 物件讀取資料表記錄

Case01: 取得 DataTable 物件的欄位名稱,寫法如下: 使用 Columns.Count 取得欄位的總數,然後再利用 for 配

合 ColumnName 來取得第 i 欄的欄位名稱,並放入TextBox1 文字方塊控制項內。

For i As Integer = 0 To dt.Columns.Count - 1 TextBox1.Text &= dt.Columns(i).ColumnName & vbTabNext

Page 14: Visual Basic 2010 ADO .NET 資料庫查詢

如何由 DataTable 物件讀取資料表記錄

Case02 :取得 DataTable 物件的欄位資料,有下列兩種方法: 使用巢狀迴圈來逐一取得 DataTable 物件第 i 列第 j 欄的資料,並放入 TextBox1 文字方塊控制項內,其寫法如下:

For i As Integer = 0 To dt.Rows.Count - 1 For j As Integer = 0 To dt.Columns.Count - 1 TextBox1.Text &= dt.Rows(i)(j).ToString() & vbTab Next TextBox1.Text &= vbNewLineNext

Page 15: Visual Basic 2010 ADO .NET 資料庫查詢

使用巢狀迴圈來逐一取得 DataTable 物件第 i 列某一個欄位的資料,並放入 TextBox1 文字方塊控制項內,其寫法如下:For i As Integer = 0 To dt.Rows.Count - 1

TextBox1.Text &= dt.Rows(i)(" 欄位名稱 1").ToString() & vbTab TextBox1.Text &= dt.Rows(i)(" 欄位名稱 2").ToString() &

vbTab TextBox1.Text &= dt.Rows(i)(" 欄位名稱 3").ToString() &

vbTab ………… TextBox1.Text &= dt.Rows(i)(" 欄位名稱 N ").ToString() &

vbTab TextBox1.Text &= vbNewLineNext

Page 16: Visual Basic 2010 ADO .NET 資料庫查詢

SQL 語法

SQL(Structured Query Language :結構化查詢語言 ) 是一套標準的資料庫管理與存取語言,它使用接近人類英文口語的方式來存取資料庫,而一般常見的 SQL Server 資料庫 ( 如微軟的 Microsoft SQL Server ) 都支援 SQL 語法,就連 Access 資料庫也可以使用 SQL 語法來存取。

SQL 成為目前各類型資料庫中最為通用的資料庫存取語言。 了解 SQL 語法是學習資料庫程式設計的首要課題之一,撰

寫 SQL 語法要注意的是,單引號括住的資料會被 SQL 語法視為字串, SQL 語法沒有大寫小之分。

關於資料庫的操作 ( 新增、修改、刪除… ) 或 SQL 等內容,時間有限,不在本課程介紹。

Page 17: Visual Basic 2010 ADO .NET 資料庫查詢

SELECT 敘述

SQL 語法中的 SELECT 敘述可根據WHERE 子句所設定的條件式,對資料庫進行資料的查詢或排序工作,其語法如下:

例如 : Select * from [data1] order by [bno],[no] 查詢 data1 資料表 , 依欄位 bno,no遞增排序 在程式中建議欄位名稱應加上 [ ], 和變數名稱有所區別

Page 18: Visual Basic 2010 ADO .NET 資料庫查詢

實例演練

實作「軟體設計丙級學科檢定測驗程式」 示範如何查詢 Access 資料庫,並完成學科測驗程式。