See Also

NativeOracleObject Members  | Devart.Data.Oracle Namespace

Language

Visual Basic

C#

Show All

See AlsoLanguagesDevart.Data.OracleSend comments on this topic.

NativeOracleObject Class

Devart.Data.Oracle Namespace : NativeOracleObject Class

Represents a Oracle object of type defined by user.

For a list of all members of this type, see NativeOracleObject members.

Inheritance Hierarchy

System.Object
   System.MarshalByRefObject
      Devart.Data.Oracle.NativeOracleObjectBase
         Devart.Data.Oracle.NativeOracleObject

Syntax

[Visual Basic]
Public Class NativeOracleObject    Inherits NativeOracleObjectBase    Implements IOracleObject, IOracleObjectBase, IDisposable 
[C#]
public class NativeOracleObject : NativeOracleObjectBase, IOracleObject, IOracleObjectBase, IDisposable 

Remarks

This class is a wrapper around OCI objects, and is intended for use in connected data access model. To retrieve values of object attributes the NativeOracleObject class uses Item indexed property.

You can create an instance of NativeOracleObject by one of the following ways:

- execute a query that returns an object as one of the fields calling OracleDataReader.GetNativeOracleObject(Int32) method;

- return an NativeOracleObject instance as a parameter value of OracleDbType.Object type;

- get object reference (OracleRef), call OracleRef.Pin method and get NativeOracleObject by calling OracleRef.GetObject method;

- get the NativeOracleObject as a value of owned NativeOracleObject attribute.

Also you can create an instance of NativeOracleObject manually.

You can use NativeOracleObject to pass object as a parameter value and post updated data to the server using NativeOracleObjectBase.Flush method for the pinned object received by OracleRef.

Note that NativeOracleObject can be used in data binding with DataGrid as it implements IListSource interface.

This class is not available in OracleConnection.Direct mode.

Example

This example demonstrates how to retrieve a NativeOracleObject instance from the server and display its elements. To create required type and table and fill it with data you can use the following script:

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');

[C#] 

OracleConnection connection = new OracleConnection("User Id=scott;Password=tiger;Data Source=ora");  
OracleCommand command = new OracleCommand("SELECT * FROM EmpObject", connection);  
connection.Open();  
OracleDataReader dataReader = command.ExecuteReader();  
try{  
    int index = dataReader.GetOrdinal("Address");  
    while (dataReader.Read()) {  
        NativeOracleObject oraObj = dataReader.GetNativeOracleObject(index);  
        if (!oraObj.IsNull) {  
            string country = (string)oraObj["Country"];  
            string city = (string)oraObj["City"];  
            string street = (string)oraObj["Street"];  
            decimal Apartment = (decimal)oraObj["Apartment"];  
            Console.WriteLine(dataReader.GetString(0) + "   " + dataReader.GetString(1) + "   " + "Adress: " + country + ", " + city + ", " + street + ", "+ Apartment.ToString() + "   " + dataReader.GetString(3));  
        }  
    }  
}  
catch (Devart.Data.Oracle.OracleException ex) {  
  Console.WriteLine(ex.Message);  
}  
finally{  
  dataReader.Close();  
  connection.Close();  

[Visual Basic] 

Dim connection As New OracleConnection("User Id=scott;Password=tiger;Data Source=ora")
Dim command As New OracleCommand("SELECT * FROM EmpObject", connection)
connection.Open()
Dim dataReader As OracleDataReader = command.ExecuteReader()
Try
    Dim index As Integer = dataReader.GetOrdinal("Address")
      While dataReader.Read()
        Dim oraObj As NativeOracleObject = dataReader.GetNativeOracleObject(index)
        If Not oraObj.IsNull Then
            Dim country As String = oraObj("Country")
            Dim city As String = oraObj("City")
            Dim street As String = oraObj("Street")
            Dim Apartment As Decimal = oraObj("Apartment")
              Console.WriteLine(dataReader.GetString(0) & " " & dataReader.GetString(1) & " " & "Adress: " & country & ", " & city & ", " & street & ", " & Apartment.ToString() & " " & dataReader.GetString(3))
        End If
      End While
Catch ex As Devart.Data.Oracle.OracleException
  Console.WriteLine(ex.Message)
Finally
  dataReader.Close()
  connection.Close()
End Try

See Also

NativeOracleObject Members  | Devart.Data.Oracle Namespace

 

 


© 2002 - 2013 Devart. All Rights Reserved.