Visual C#作是微軟極力推薦的下一代程式開發語言,他有一個非常重要伴侶--.Net Framework SDK,在他的裡面封裝了許多Class Library (類庫)。Visual C#要實現很多拓展功能,就必須藉助於他的這個伴侶。在Visual C#中對資料庫的處理是其功能的一個重要表現。Visual C#在進行資料庫處理的時候,經常用到.Net FrameWork SDK中的一個名稱空間 是 System.Data.Oledb。在這個名稱空間中封裝了許多和資料庫處理的相關Class(類)。本文就是通過二個具體的執行個體來說明在Visual C#如何?對資料庫的訪問。
一.程式設計和運行環境是:
微軟公司視窗2000 專業版,.Net FrameWork SDK BETA 2 ,Microsoft Access Data Component 2.6 ( MADC2.6 )
二. 程式主要作用
本文中主要有二個原始碼,其一說明如何在Visual C#中對訪問資料庫,本機資料庫選擇的是微軟公司的Acess 2000;其二說明如何在Visual C#中對訪問資料庫,遠端資料庫選擇的是微軟公司的產品--SQL Server 7.0。
三.例子設計過程中的思路
(1).首先要匯入名稱空間
(2).建立指向資料庫的資料連線
(3).在此資料連線上,建立一個SQL語句,用來返回所需用的資料集
(4).開啟資料連線,執行SQL語句,返回所需的資料集
(5).關閉資料集,關閉資料連線
四.第一個例子first.cs -- 開啟本機資料庫(my.mdb)
程式運行後的結果如所示:
程式中的重要步驟:
(1).匯入名稱空間空間
在本例子中要匯入三個名稱空間,分別是:System、System.Data.OleDb、System.Windows.Forms。匯入System名稱空間是因為程式中用到其中的Console類。匯入System.Windows.Forms名稱空間是因為程式中用到其中的Application類。
(2).建立指向資料庫的串連
建立串連要用到System.Data.OleDb名稱空間中的類--OleDbConnection。通過以下語句可以完成對本機資料庫的串連工作:
string strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
Application.StartupPath + "\\my.mdb" ;
OleDbConnection aConnection = new OleDbConnection ( strConnect ) ;
其中第一句中的"Provider"是表明資料庫引擎的類型。"Data Source"是指向的資料庫名稱。
(3).在此資料連線上,建立一個SQL語句,用來返回所需用的資料集
建立SQL語句來得到資料集,要用到System.Data.OleDb名稱空間中的類--OleDbCommand。通過以下語句可完成此項工作。
OleDbConnection aConnection = new OleDbConnection ( strConnect ) ;
(4). 開啟資料連線,執行SQL語句,返回所需的資料集
要完成此項操作,需用到OleDbConnection類中的Open方法,和OleDbCommand類中的ExecuteReader方法。返回的資料集要用的System.Data.OleDb名稱空間中的另一個類--OleDbDataReader。這個類就像是一個容器,提供要訪問的資料集。主要語句如下:
aConnection.Open ( ) ;
OleDbDataReader aReader = aCommand.ExecuteReader ( ) ;
(5).關閉資料集,關閉資料連線
要關閉資料集要用到OleDbDataReader類中的Close方法,要關閉資料連線要用到OleDbConnection類中的Close方法。注意,最好先關閉返回的資料集,再關閉指向資料庫的串連。具體程式如下:
aReader.Close ( ) ;
aConnection.Close ( ) ;
(6).在程式中,還設計了一個例外處理。在出現例外的時候,顯示錯誤資訊。錯誤資訊的捕獲是通過System.Data.OleDb名稱空間中的類--OleDbException來實現的。具體如下:
try
{
…….
}
catch ( OleDbException e )
{
Console.WriteLine ( "錯誤類型:", e.Errors[0].Message ) ;
}
first.cs 的程式原始碼如下:
using System ;
using System.Data.OleDb ;
using System.Windows.Forms ;
// 匯入程式中用的的所有名稱空間
class OleDbTest {
public static void Main ( )
{
string strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
Application.StartupPath + "\\my.mdb" ;
OleDbConnection aConnection = new OleDbConnection ( strConnect ) ;
// 建立指向資料庫的串連
OleDbCommand aCommand = new OleDbCommand ( "select * from Persons" ,
aConnection ) ;
// 設計所需要返回的資料集的內容
try {
aConnection.Open ( ) ;
// 開啟指向資料庫連接
OleDbDataReader aReader = aCommand.ExecuteReader ( ) ;
// 返回需要的資料集內容
Console.WriteLine ( "以下就是開啟後的資料集的一個欄位的所有內容!" ) ;
while ( aReader.Read ( ) ) {
Console.WriteLine ( aReader.GetString (0) ) ;
}
// 螢幕輸出資料集的第一個欄位的所有內容,如果要第二個欄位把"0"改為"1"
aReader.Close ( ) ;
// 關閉資料集
aConnection.Close ( ) ;
// 關閉指向資料庫的串連
}
catch ( OleDbException e )
{
Console.WriteLine ( "錯誤類型:", e.Errors[0].Message ) ;
// 如果出錯,輸出錯誤資訊
}
}
}
五.第二個例子--訪問遠端資料庫Sql server 7.0
訪問Sql server 7.0的程式碼和訪問Acess 2000的程式碼的主要區別有二點:
1. 選用的資料庫引擎不一樣。訪問Sql server 7.0的指向資料庫的串連要用以下語句:
string strConnect = " Provider=SQLOLEDB.1 ; Persist Security Info=False ; User ID = sa ; Initial Catalog=xsgl ; Data Source = czdy1 " ;
其中"Initial Catalog"是要選用的資料庫名稱。"Data Source"是提供資料庫服務的伺服器名稱。
2. 不要在匯入System..Windows.Forms名稱空間
這是因為訪問的是遠端資料庫,不需要用到Application類了。
訪問遠端資料庫的程式原始碼--second.cs
using System ;
using System.Data.OleDb ;
// 匯入程式中用的的所有名稱空間
class OleDbTest {
public static void Main ( )
{
string strConnect = " Provider=SQLOLEDB.1 ; Persist Security Info=False
; User ID = sa ; Initial Catalog=xsgl ; Data Source = czdy1 " ;
OleDbConnection aConnection = new OleDbConnection ( strConnect ) ;
// 建立指向資料庫的串連
OleDbCommand aCommand = new OleDbCommand ( "select * from xsk" ,
aConnection ) ;
// 設計所需要返回的資料集的內容
try {
aConnection.Open ( ) ;
// 開啟指向資料庫連接
OleDbDataReader aReader = aCommand.ExecuteReader ( ) ;
// 返回需要的資料集內容
Console.WriteLine ( "以下就是開啟後的資料集的一個欄位的所有內容!" ) ;
while ( aReader.Read ( ) ) {
Console.WriteLine ( aReader.GetString (0) ) ;
}
// 螢幕輸出資料集的第一個欄位的所有內容,如果要第二個欄位把"0"改為"1"
aReader.Close ( ) ;
// 關閉資料集
aConnection.Close ( ) ;
// 關閉指向資料庫的串連
}
catch ( OleDbException e )
{
Console.WriteLine ( "錯誤類型:", e.Errors[0].Message ) ;
file://如果出錯,輸出錯誤資訊
}
}
}
六.總結
上面的二個例子表明,訪問遠端資料庫和訪問本機資料庫在原理上都是一樣的,主要的區別在於開啟資料庫所需要的資料引擎,在程式設計中表現為開啟指向資料庫的串連所需設定的引擎參數的不一樣。通過上面的二個例子,我想要再訪問其他類型的資料庫,就顯得不是那麼困難了。