.NET連線ORACLE資料庫的方法及示例
第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();
}
}