在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 應用軟件教程 > 詳細頁面

.NET訪問Oracle數據庫相關

.NET訪問Oracle數據庫相關

更新時間:2025-10-15 文章作者:未知 信息來源:網絡 閱讀次數:

數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應...
數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數據集合。
長期以來,我一直用的是 MS SQL Server / Access 數據庫,通過 .NET 訪問 MS 自家的東西幾乎沒碰到過什么麻煩。最近項目中要用 Oracle 作為數據庫,學習研究了一些 .NET 訪問 Oracle 的東西,發現問題倒真的不少。

1。System.Data.OracleClient 和 System.Data.OleDb 命名空間

雖然通過這兩個命名空間的類都可以訪問 Oracle 數據庫,但和 SQL Server 類似的(System.Data.SqlClient 命名空間的類效率要比 System.Data.OleDb 命名空間中的類高一些),System.Data.OracleClient 命名空間中的類要比 System.Data.OleDb 命名空間的類效率高一些(這一點我沒有親自驗證,但大多數地方都會這么說,而且既然專門為 Oracle 作的東西理論上也應該專門作過針對性的優化)。
當然還有另一點就是從針對性上說,System.Data.OracleClient 要更好一些:
比如數據類型,System.Data.OleDb.OleDbType 枚舉中所列的就沒有System.Data.OracleClient.OracleType 枚舉中的那些有針對性;另外,Oracle 的 Number 類型如果數字巨大,超出 .NET 數據類型范圍的情況中,就必須使用 System.Data.OracleClient 中的專門類 -- OracleNumber 類型。
好了,不再贅述這兩個的比較,下面主要討論 System.Data.OracleClient 命名空間中的類型,即 ADO.NET for Oracle Data Provider (數據提供程序)。

2。數據庫連接:

無論是 System.Data.OleDb 還是 System.Data.OracleClient 訪問 Oracle 都需要在 .NET 運行的機器(ASP.NET 中就是 Web 服務器)安裝 Oracle 客戶端組件。(這一點是和 MS 的兩種數據庫不同的,MS 的東西安裝 MDAC: Microsoft Data Access Component 2.6 以上版本后,就無須再安裝 SQL Server 客戶端或者 Office 軟件,就能訪問。)
System Requirements:

(1)如用 System.Data.OracleClient 訪問 Oracle,客戶端組件版本應在 Oracle 8i Client Release 3 (8.1.7)以上版本。MS 只確保訪問 Oracle 8.1.6、Oracle 8.1.7、Oracle 9i 服務器時的情況。MDAC 2.6 以上。

(2)如用 System.Data.OleDb 訪問 Oracle,客戶端組件版本 7.3.3.4.0 以上或 8.1.7.4.1 以上。MDAC 2.6 以上。
如服務器為 Oracle8i 以上,客戶端組件版本應為 8.0.4.1.1c。
在 .NET 運行的機器中,安裝 Oracle 客戶端,然后打開 Net Manager (Oracle 9i) / Easy Config (Oracle 8i) 按你以前的經驗設置本地服務的映射(這里的服務名將用于數據庫連接串)。
System.Data.OracleClient 中訪問 Oracle 數據庫的連接串是:
User ID=用戶名; Password=密碼; Data Source=服務名
(上述為一般的連接串,詳細的連接串項目可以在 System.Data.OracleClient.OracleConnection.ConnectionString 屬性的文檔中找到。)
System.Data.OleDb 中的訪問 Oracle 數據庫的連接串是:
Provider=MSDAORA.1; User ID=用戶名; Password=密碼; Data Source=服務名

3。Oracle 中的數據類型:
Oracle 的數據類型和 SQL Server 相比,要“奇怪”一些:SQL Server 的大多數據類型很容易找到 .NET 中比較接近的類型,Oracle 中的類型就離 .NET 類型遠了許多,畢竟 Oracle 是和 Java 親近的數據庫。
number: 數字類型,一般是 Number(M,N),M是有效數字,N是小數點后的位數(默認0),這個是按十進制說的。 
nvarchar2: 可變長字符型(Unicode),這個比較像 SQL Server 的 nvarchar(但不知 Oracle 為什么加了個“2”)。(去掉“n”為非 Unicode 的,下同。) 
nchar: 定長字符型(Unicode)。 
nclob: “寫作文”的字段,存儲大量字符(Unicode)時用。 
date: 日期類型,比較接近 SQL Server 的 datetime。
Oracle 中字段不能是 bit 或者 bool 之類的類型,一般是 number(1) 代替的。
和 SQL Server 一樣在 SQL 命令中,字符類型需要用單引號(’)隔開,兩個單引號(’’)是單引號的字符轉義(比如: I’m fat. 寫入一個 SQL 命令是: UPDATE ... SET ...=’I’’m fat.’ ...)。
比較特殊的是日期類型:比如要寫入 2004-7-20 15:20:07 這個時刻需要如下寫:
UPDATE ... SET ... = TIMESTAMP ’2004-7-20 15:20:07’ ...
注意這里使用了 TIMESTAMP 關鍵字,并使用單引號隔開;另外請注意日期格式,上面的格式是可識別的,Oracle 識別的格式沒有 SQL Server 那般多。這是和 SQL Server 不同的地方。
順便提一句:Access 中的日期類型是用井號(#)隔開的,UPDATE ... SET ... = #2004-7-20 15:20:07# ...

4。訪問 Oracle 過程/函數(1)
SQL Server 作程序時經常使用存儲過程,Oracle 里也可以使用過程,還可以使用函數。Oracle 的過程似乎是不能有返回值的,有返回值的就是函數了(這點有些像 BASIC,函數/過程區分的很細致。SQL Server 存儲過程是可以有返回值的)。
[page_break].NET 訪問 Oracle 過程/函數的方法很類似于 SQL Server,例如:
OracleParameter[] parameters = {
    new OracleParameter("ReturnValue", OracleType.Int32, 0, ParameterDirection.ReturnValue, true, 0, 0, "",
         DataRowVersion.Default, Convert.DBNull )
    new OracleParameter("參數1", OracleType.NVarChar, 10),
    new OracleParameter("參數2",  OracleType.DateTime),
    new OracleParameter("參數3",  OracleType.Number, 1)
 };
parameters[1].Value = "test";
parameters[2].Value = DateTime.Now;
parameters[3].Value = 1;                        // 也可以是 new OracleNumber(1);
OracleConnection connection = new OracleConnection( ConnectionString );
OracleCommand command = new OracleCommand("函數/程名", connection);
command.CommandType = CommandType.StoredProcedure;
foreach(OracleParameter parameter in parameters)
     command.Parameters.Add( parameter );
connection.Open();
command.ExecuteNonQuery();
int returnValue = parameters[0].Value; //接收函數返回值
connection.Close();
Parameter 的 DbType 設定請參見 System.Data.OracleClient.OracleType 枚舉的文檔,比如:Oracle 數據庫中 Number 類型的參數的值可以用 .NET decimal 或 System.Data.OracleClient.OracleNumber 類型指定; Integer 類型的參數的值可以用 .NET int 或 OracleNumber 類型指定。等等。
上面例子中已經看到函數返回值是用名為“ReturnValue”的參數指定的,該參數為 ParameterDirection.ReturnValue 的參數。
5。訪問 Oracle 過程/函數 (2)
不返回記錄集(沒有 SELECT 輸出)的過程/函數,調用起來和 SQL Server 較為類似。但如果想通過過程/函數返回記錄集,在 Oracle 中就比較麻煩一些了。
在 SQL Server 中,如下的存儲過程:
CREATE PROCEDURE GetCategoryBooks
(
    @CategoryID int
)
AS
SELECT * FROM Books
WHERE CategoryID = @CategoryID
GO
在 Oracle 中,請按以下步驟操作:
(1)創建一個包,含有一個游標類型:(一個數據庫中只需作一次)
CREATE OR REPLACE PACKAGE Test
  AS
       TYPE Test_CURSOR IS REF CURSOR;
END Test;
(2)過程:
CREATE OR REPLACE PROCEDURE GetCategoryBooks
(
     p_CURSOR out Test.Test_CURSOR,    -- 這里是上面包中的類型,輸出參數
     p_CatogoryID INTEGER
)
AS
BEGIN
     OPEN p_CURSOR FOR
           SELECT * FROM Books
           WHERE CategoryID=p_CatogoryID;
END GetCategoryBooks;
(3).NET 程序中:
OracleParameters parameters = {
     new OracleParameter("p_CURSOR", OracleType.CURSOR, 2000, ParameterDirection.Output, true, 0, 0, "",
          DataRowVersion.Default, Convert.DBNull),
     new OracleParameter("p_CatogoryID", OracleType.Int32)
};
parameters[1].Value = 22;
OracleConnection connection = new OracleConnection( ConnectionString );
OracleCommand command = new OracleCommand("GetCategoryBooks", connection);
command.CommandType = CommandType.StoredProcedure;
foreach(OracleParameter parameter in parameters)
     command.Parameters.Add( parameter );
connection.Open();
OracleDataReader dr = command.ExecuteReader();
while(dr.Read())
{
    // 你的具體操作。這個就不需要我教吧?
}
connection.Close();
另外有一點需要指出的是,如果使用 DataReader 取得了一個記錄集,那么在 DataReader 關閉之前,程序無法訪問輸出參數和返回值的數據。

全新的路由器不僅讓你更穩定快速地連接無線網絡,更可以讓家中的智能設備連接在一起。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 999久久久精品视频| 蜜臀av.com| 国产极品尤物在线| 日本a在线天堂| 一二三四中文字幕| 天堂av.com| 99re99热| 日本高清xxxx| 成熟丰满熟妇高潮xxxxx视频| 4444亚洲人成无码网在线观看| 手机免费看av网站| 国产av不卡一区二区| 精品国产鲁一鲁一区二区三区| 污污的网站免费| www.51色.com| 日本男女交配视频| 久久成人免费观看| 中文字幕第88页| 亚洲色图都市激情| 久久久一本二本三本| 在线免费观看av的网站| 好色先生视频污| 国产精品探花在线播放| 久久精品视频在线观看免费| 日本中文字幕精品—区二区| 最新中文字幕久久| 国产精品视频网站在线观看| 日韩网站在线免费观看| 日韩在线xxx| 国产四区在线观看| 精品视频免费在线播放| 黄色片在线免费| 天天操天天干天天玩| 日韩avxxx| 亚洲欧美日韩不卡| 成人一区二区三| 大地资源网在线观看免费官网| 成人网站免费观看入口| 成人性生交免费看| 999在线观看视频| www,av在线| 久久精品网站视频| 国产小视频免费| 国产毛片久久久久久| 日韩av片在线看| 最新黄色av网站| 香港日本韩国三级网站| 婷婷五月综合缴情在线视频| 在线看免费毛片| 嫩草av久久伊人妇女超级a| 日韩不卡一二区| 奇米视频7777| 手机看片一级片| 男女污污的视频| 蜜臀av午夜一区二区三区| 2019日韩中文字幕mv| theporn国产精品| 伊人影院综合在线| 成人免费视频久久| 欧美 激情 在线| 亚洲国产精品久久久久爰色欲| 日本一级淫片演员| 午夜免费看毛片| 中文字幕 91| 亚洲久久中文字幕| 五月六月丁香婷婷| 三年中文在线观看免费大全中国| 99视频精品免费| jizz欧美激情18| 超碰在线播放91| 亚洲36d大奶网| 在线免费看v片| 国产日本欧美在线| 国产免费内射又粗又爽密桃视频| 香蕉视频在线网址| www.亚洲视频.com| 欧美国产亚洲一区| av五月天在线| 国产在线观看中文字幕| 欧美 日韩 国产精品| 男人天堂a在线| 色诱视频在线观看| 自拍偷拍21p| 少妇久久久久久被弄到高潮| 日本阿v视频在线观看| 免费一级特黄特色毛片久久看| 又大又硬又爽免费视频| 久久综合九色综合88i| 亚欧在线免费观看| 国产麻豆电影在线观看| 国产午夜福利100集发布| 国产精品69页| 糖心vlog在线免费观看| 91视频最新入口| 色多多视频在线播放| 无码人妻aⅴ一区二区三区日本| 久久在线中文字幕| 中日韩av在线播放| 青青草国产精品视频| 男生操女生视频在线观看| 免费特级黄色片| 久久婷婷综合色| 国产精品333| 日韩精品福利片午夜免费观看| 18岁视频在线观看| 国产免费xxx| 91制片厂毛片| 国产精品无码一区二区在线| 国产大片一区二区三区| 欧美性大战久久久久xxx| 国内精品国产三级国产aⅴ久| ww国产内射精品后入国产| 香港日本韩国三级网站| 成人在线免费观看av| 久久精品国产精品亚洲精品色| 免费毛片小视频| www.xxx麻豆| 水蜜桃在线免费观看| 日韩欧美亚洲另类| 可以免费在线看黄的网站| 手机在线视频你懂的| 911福利视频| 国产91色在线观看| 搡女人真爽免费午夜网站| 国精产品一区一区三区视频| 免费久久久久久| 在线观看免费黄色片| 中日韩av在线播放| 一区二区免费av| gai在线观看免费高清| 在线免费视频一区| 欧美一级裸体视频| 日本a√在线观看| 国产精品天天av精麻传媒| 久久久久久久片| 午夜在线观看av| 黄色小视频免费网站| 午夜天堂在线视频| 久久久精品视频国产| 91免费视频黄| 男人添女荫道口喷水视频| 搞av.com| 日韩免费高清在线| 日本美女视频一区| 国产美女视频免费| 岛国大片在线播放| 宅男噜噜噜66国产免费观看| 一级黄色特级片| 免费成人进口网站| 国产特级淫片高清视频| 自慰无码一区二区三区| 91人人澡人人爽人人精品| 在线观看国产一级片| 熟女视频一区二区三区| 99热亚洲精品| 亚洲欧美偷拍另类| 欧美 国产 精品| 国产99久久九九精品无码| 另类小说第一页| 欧美极品少妇无套实战| 37pao成人国产永久免费视频| 在线观看日本一区二区| 成人午夜视频免费观看| 国产性生交xxxxx免费| 日本一二三四区视频| 亚洲熟妇av日韩熟妇在线| 精品视频无码一区二区三区| 日本中文字幕观看| 日韩av黄色网址| 青青草免费在线视频观看| 欧美 激情 在线| 成年人深夜视频| 久久精品国产露脸对白| 国产a级一级片| 精品一区二区三区无码视频| 最新天堂中文在线| 人妻熟妇乱又伦精品视频| 丰满女人性猛交| 五月天婷婷影视| 国产真人无码作爱视频免费| 久艹在线免费观看| 无码毛片aaa在线| 99视频在线视频| 成熟老妇女视频| 你懂的av在线| 国产毛片视频网站| 久操手机在线视频| 超级碰在线观看| 特级黄色片视频| 欧美日韩精品区别| 天天爽人人爽夜夜爽| 国产最新免费视频| 干日本少妇首页| 久久久久久久中文| 777精品久无码人妻蜜桃| 婷婷五月综合缴情在线视频| 成年人视频网站免费| www.一区二区.com| 超碰成人免费在线| 久久综合九色综合88i|