原創|使用教程|編輯:郝浩|2013-05-02 16:53:25.000|閱讀 340 次
概述:dotConnect for Oracle可以使用用戶自定義類型,由于在Oracle數據庫中提供機制使用類型化和非類型化的oracleobjects。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
dotConnect for Oracle可以使用用戶自定義類型,由于在Oracle數據庫中提供機制使用類型化和非類型化的oracleobjects。
非類型化的OracleObjects是由OracleObject類實例表示。這是一種處理Oracle對象靈活的機制,但是卻不能夠類型驗證,同時比起使用類型化OracleObjects.而言,也不是很便捷。
類型化oracleobject代表單一的用戶定義類型,允許像普通的.NET對象一樣使用實例。本文主要是講解如何創建和使用類型化的OracleObjects。值得注意的是,類型化和無類型化的OracleObjects都可以在OCI模式下使用。
現在需要用戶定義的類型TAddress,和一張有在你的Oracle 數據庫中創建的TAddress類型字段的表EmpObject,這個可以通過下面的代碼實現:
CREATE TYPE TAddress AS OBJECT ( Country VARCHAR2(30), City VARCHAR2(30), Street VARCHAR2(30), Apartment NUMBER ); / CREATE TABLE EmpObject ( Code NUMBER PRIMARY KEY, Person VARCHAR2(40), Address TADDRESS, Job VARCHAR2(9) ); / INSERT INTO EmpObject (Code, Person, Address, Job) VALUES (1, 'SMITH', TAddress('UK', 'London', 'Street', 12), 'CLERK'); INSERT INTO EmpObject (Code, Person, Address, Job) VALUES (2, 'JONES', TAddress('USA', 'New York', 'Street', 418), 'MANAGER'); INSERT INTO EmpObject (Code, Person, Address, Job) VALUES (3, 'SCOTT', TAddress('CANADA', 'Ottawa', 'Street', 26),'PRESIDENT'); INSERT INTO EmpObject (Code, Person, Address, Job) VALUES (4, 'MARTIN', TAddress('FRANCE', 'Paris', 'Street', 162), 'ANALYST');
創建類型化OracleObjects
要創建一個類型化的OracleObject ,可以執行下列步驟:
1、啟動類型化Oracle對象向導:在vs的主菜單中選擇Tools -> Oracle -> Oracle Objects。
2、將連接屬性設置到你創建對象類型化的服務器上,然后點擊“下一步”:
注意在OCI模式下使用連接,主要是因為Oracle對象在直接模式下不可用。
3、選擇你想要的類型并單擊“下一步”。在此示例中, 使用的是TAddress類型:
4、設置生成的類的名稱、命名空間的放置、對象的命名規則。示例中選擇的是默認值。
導航將會生成用于展示TAddress對象類型的TAddress類。
使用類型化的OracleObjects
通過產生的的類型OracleObject類,Oracle UDTs的屬性就可以像通常的.NET對象一樣使用。下面來看看如何使用Taddress實例,代碼如下所示:
C#
// Create and open a connection. Connection should not be in Direct mode, // as in this case Oracle Objects would be unavailable. OracleConnection connection = new OracleConnection ("Server = Ora; User Id = Scott; Password = tiger; Direct = false;"); connection.Open(); // Create a command selecting all rows from the table EmpObject OracleCommand command = new OracleCommand ("select * from empobject", connection); // By default, all Oracle Objects are retrieved by the application as instances // of the OracleObject class. Thus, to use typed OracleObjects, we need to set // the mapping from the TADDRESS Oracle UDT to Taddress class used in the application. OracleType.GetObjectType("TAddress", connection).UdtType = typeof(TAddress); // Execute the command, retrieve the data reader and print the table content. OracleDataReader r = command.ExecuteReader(); while (r.Read()) { TAddress addr = (Taddress)r["Address"]; Console.WriteLine (r["Person"].ToString() + ": " + addr.Country + ", " + addr.City + ", " + addr.Street + " " + addr.Apartment); }
[Visual Basic]
Create and open a connection. Connection should not be in Direct mode, ' as in this case Oracle Objects are unavailable. Dim connection = New OracleConnection( _ "Server = Ora; User Id = Scott; Password = tiger; Direct = false;") connection.Open() ' Create a command selecting all rows from the table EmpObject Dim command = New OracleCommand ("select * from empobject", connection) ' By default, all Oracle Objects are retrieved by the application as instances ' of the OracleObject class. Thus, to use typed OracleObjects, we need to set ' the mapping from the TADDRESS Oracle UDT to Taddress class used in the application. OracleType.GetObjectType("TAddress", connection).UdtType = GetType(TAddress) ' Execute the command, retrieve the data reader and print the table content. Dim r As OracleDataReader = command.ExecuteReader() While (r.Read()) Dim addr As Taddress = r("Address") Console.WriteLine( _ r("Person").ToString() + ": " + addr.Country + ", " + _ addr.City + ", " + addr.Street + " " + addr.Apartment.ToString()) End While
下一個示例是使用Taddress類的參數更新了EmpObject表,代碼如下所示:
[C#]
// Create an UPDATE command with parameter OracleCommand command = new OracleCommand ("update empobject set address = :pAddress where code = 1", connection); // Create and set a Taddress object Taddress addr = new Taddress(); addr.Country = "USA"; addr.City = "New York"; addr.Street = "Street"; addr.Apartment = 418; // Set up the command parameter. OracleParameter param = new OracleParameter("pAddress", OracleDbType.Object, "TAddress"); param.Value = addr; command.Parameters.Add(param); // Execute the command. command.ExecuteNonQuery();
[Visual Basic]
Create an UPDATE command with parameter Dim command = New OracleCommand( _ "update empobject set address = :pAddress where code = 1", connection) ' Create and set a Taddress object Dim addr As Taddress = New Taddress() addr.Country = "USA" addr.City = "New York" addr.Street = "Street" addr.Apartment = 418 ' Set up the command parameter. Dim param = New OracleParameter("pAddress", OracleDbType.Object, "TAddress") param.Value = addr command.Parameters.Add(param) ' Execute the command. command.ExecuteNonQuery()
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件