.net與Oracle之間的訪問,畢竟不是一個娘生的,和sqlserver還是稍微有點區別。
1.命名空間的選擇:
訪問Oracle資料庫,通過System.Data.OracleClient、System.Data.OleDb、System.Data.Odbc三個命名空間都可以訪問。System.Data.OracleClient訪問的效率最高,System.Data.OracleClient對Oracle類型的支援也是最多的,畢竟是為Oracle量身定做的。
2.資料庫連接:
無論是那種訪問Oracle 都需要在 .NET 啟動並執行機器(ASP.NET 中就是 Web 服務器)安裝 Oracle 用戶端組件。(這一點是和 MS 的兩種資料庫不同的,MS 的東西安裝 MDAC: Microsoft Data Access Component 2.6 以上版本後,就無須再安裝 SQL Server 用戶端或者 Office 軟體,就能訪問。)
System.Data.OracleClient 中訪問 Oracle 資料庫的串連串是:"User ID=使用者名稱; Password=密碼; Data Source=伺服器"。
System.Data.OleDb中訪問 Oracle 資料庫的串連串是:"Provider=MSDAORA.1; User ID=使用者名稱; Password=密碼; Data Source=伺服器"。
System.Data.Odbc中訪問 Oracle 資料庫的串連串是:"Driver=Microsoft ODBC for Oracle; Uid=使用者名稱; Pwd=密碼; Server=伺服器";
3.Oracle 中的資料類型:
SQL Server 的大多資料類型很容易找到 .NET 中比較接近的類型,而Oracle 中的類型就離 .NET 類型差別很多,不是一個娘生的。
number: 數字類型,一般是 Number(M,N),M是有效數字,N是小數點後的位元(預設0),這個是按十進位說的。
nvarchar2: 可變長字元型(Unicode),(Orcle8i增加nvarchar2類型,以後Oracle更新只會對nvarchar2支援)(去掉“n”為非 Unicode 的,下同。)
nchar: 定長字元型(Unicode)。
nclob: “寫作文”的欄位,儲存大量字元(Unicode)時用。
date: 日期類型。
Oracle 中欄位不能是 bit 或者 bool 之類的類型,一般是 number(1) 代替的。
4.串連sample:
用oracleclient串連,(其他串連只需更換命名空間和連接字串)
string oracle_conn = "User ID=UserId; Password=******; Data Source=ServerName";
string sql_search = "select * from table_test ";
using (OracleConnection conn = new OracleConnection(oracle_conn))
{
conn.Open();
OracleCommand com = new OracleCommand(sql_search, conn);
OracleDataReader dr = com.ExecuteReader();
while (dr.Read())
{
Response.Write(dr["c_name"].ToString() +"<br>");
}
dr.Close();
conn.Close();