程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 在Visual C#中訪問不同數據庫

在Visual C#中訪問不同數據庫

編輯:關於C#

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://如果出錯,輸出錯誤信息
  }
}
}

六.總結

上面的二個例子表明,訪問遠程數據庫和訪問本地數據庫在原理上都是一樣的,主要的區別在於打開數據庫所需要的數據引擎,在程序設計中表現為打開指向數據庫的連接所需設定的引擎參數的不一樣。通過上面的二個例子,我想要再訪問其他類型的數據庫,就顯得不是那麼困難了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved