1. 程式人生 > >.NET連線ORACLE資料庫的方法及示例

.NET連線ORACLE資料庫的方法及示例

.NET連線ORACLE資料庫的方法就目前有3種: 1.OLEDB的方式,這種方式要求你要安裝oracle client,這兩年來做的關於oracle資料庫的,我都採用這種方式,雖然連線的速度慢了一點,但是用起來是蠻順手的,基本能滿足要求,連線字串如下: "Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=ORDR1229;Password=ORDR;Data Source=MSTR;Connection Lifetime=30;Max Pool Size=50;Min Pool Size=1;Pooling=true;Extended Properties=" 2.Microsoft .NET Framework Data Provider for Oracle,這種方式連線需要引用.net framework自帶的system.data.oracledb,不要以為這種方式不用裝oracle client,沒裝情況下,會提示:"System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.",所以還是要裝的,採用這種方式可參見http://msdn.microsoft.com/library/cht/default.asp?url=/library/CHT/cpref/html/frlrfsystemdataoracleclient.asp這裡頭有做詳細的介紹 3.Oracle Data Provider for .NET連線oracle資料庫,這是oracle公司提供的,在使用之前須到oracle的網站下載安裝包,http://www.oracle.com/technology/software/tech/windows/odpnet/utilsoft.html(下 載之前需要註冊),安裝之後,它會在visual studio 2003中新增一個工具條,叫做oracle瀏覽器,相當於oracle的Enterprise Manager Console,不過,只能操作一個數據庫,可以完成建表,查詢等等功能。關於如何使用,可參見
http://surer.cnblogs.com/archive/2005/08/30/225990.aspx



第3總方法 示例如下:
注意,這裡不是使用Microsoft .NET Framework Data Provider for Oracle(以下簡稱為.NET for Oracle))。通常訪問oracle有兩種方法,即比較業餘的oledb方式和.NET for Oracle方式,後者在編寫程式時需要新增引用system.data.oracledb.
       今天介紹另一個方法,即使用Oracle Data Provider for .NET連線oracle資料庫。首先需要下載包含此檔案的安裝包。安裝之後,它會在visual studio 2003中新增一個工具條,叫做oracle瀏覽器,相當於oracle的Enterprise Manager Console,不過,只能操作一個數據庫,可以完成建表,查詢等等功能。

Oracle Data Provider for .NET有兩個名字空間,分別是Oracle.DataAccess.Client和Oracle.DataAccess.Types。 Oracle.DataAccess.Client用於設定資料庫的連線等等通用功能,Oracle.DataAccess.Types用於設定 oracle自定義的一些資料型別。使用之前,需要在專案中新增引用Oracle.DataAccesss.dll。下面舉個例子說明:
       1. 建立資料庫
           建立一個名為OracleTypesTable的表
           "create table OracleTypesTable (MyVarchar2 varchar2(3000),MyNumber number(28,4) Primary key ,MyDate           date,MyRaw RAW(255))";
           插入一行資料
          "insert into OracleTypesTable values ('test',4,to_date('2000-01-11
           12:54:01','yyyy-mm-dd hh24:mi:ss'),'0001020304')";
      2.c#例項

       private void Page_Load(object sender, System.EventArgs e)
  {
  
   string connstring="User Id=使用者名稱;Password=密碼;Data Source=資料來源";
           //例項化OracleConnection物件
            OracleConnection conn=new OracleConnection(connstring);

            try
            {
              conn.Open();
              //例項化OracleCommand物件
              OracleCommand cmd=conn.CreateCommand();

              cmd.CommandText="select * from 資料來源.OracleTypesTable";
              OracleDataReader oracledatareader1=cmd.ExecuteReader();
              //讀取資料
              while (oracledatareader1.Read())
     {
             //讀取並顯示第一行第一列的資料
               OracleString oraclestring1=oracledatareader1.GetOracleString(0);
               Response.Write("<br>OracleString :" +oraclestring1.ToString());

            //讀取並顯示第一行第二列的資料
               OracleDecimal oraclenumber1 =oracledatareader1.GetOracleDecimal(1);//.GetOracleValue(1);//GetOracleNumber(1);
               Response.Write("<br>OracleNumber :"+oraclenumber1.ToString());
      Response.Write("<br>NumberType :"+oraclenumber1.GetType());

            //讀取並顯示第一行第三列的資料
               OracleDate oracledatetime1=oracledatareader1.GetOracleDate(2);
               Response.Write("<br>OracleDateTime :" +oracledatetime1.ToString());

            //讀取並顯示第一行第四列的資料
               OracleBinary oraclebinary1=oracledatareader1.GetOracleBinary(3);
               if(oraclebinary1.IsNull==false)
      {
       foreach(byte b in oraclebinary1.Value)
       {
        Response.Write("<br>byte :" +b.ToString());
       }
      }
     }
            //釋放資源
    oracledatareader1.Close();
   }
   catch(Exception ee)
   {
           //異常處理
    strMESS.Text=ee.Message;
   }
   finally
   {
         //關閉連線
    conn.Close();
   }
  }