Top Banner
1 Oracle Rdb Technical Forums Connecting to Oracle Rdb from .NET Jim Murray Oracle New England Development Centre
56

Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

Dec 06, 2018

Download

Documents

buidiep
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

1

Oracle Rdb Technical ForumsConnecting to Oracle Rdb

from .NETJim Murray

Oracle New England Development Centre

Page 2: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

Agenda

• .NET• Connectivity Overview• ADO.NET Overview• Oracle Data Provider for .NET• Oracle Rdb Data Provider for .NET

Page 3: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

3

Microsoft .NET• Connecting applications over the web

– W3C standardized XML Web Services– Loosely-coupled distributed architecture– Core set of technologies– Make as much use of CLIENT processing

power as possible

Page 4: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

4

Microsoft .NET (cont.)• Core components

– .NET Enterprise Servers– .NET Smart Clients– XML Web services– Developer tools

• Technologies– Common Language Runtime (CLR)– .NET class libraries– ASP.NET

Page 5: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

5

Microsoft .NET (cont.)

• Framework ( similar to J2EE )– Net(Sockets) , Data (ADO.NET)– Namespaces , Collections , Configuration– DirectoryServices, EnterpriseServices (COM+)– Globalisation ,Reflection, Remoting,

Serialisation,Security,Threading– Web,XML

Page 6: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

6

.NET data access

ClientApplication

ADO.NET API server

Proprietary API

.NET Web Services

.NET data source

Page 7: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

7

Client Connectivity

• From Open/VMS– SQL precompilers/ SQLMOD/Interactive SQL– SQL/Services– JDBC

• From Desktop– SQL/Services– ODBC– JDBC– ADO.NET

Page 8: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

8

SQL/Services

• SQL/Services API• ODBC• OCI Services• V7.2 now available

Page 9: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

9

SQLSRV ClientArchitecture

Client using SQL/Services client API directly

ClientApplication

SQL/ServicesClient API

server

Page 10: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

10

SQL/Services Clients

• OpenVMS• Microsoft Windows 2000/98/95/NT• Microsoft Windows XP/ME from V7.2• Tru64 Unix• Red Hat Linux from V7.1.6

Page 11: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

11

SQLSRV ClientArchitecture

serverClient

ApplicationODBC forOracle Rdb

SQL/ServicesClient API

Client using ODBC for Oracle Rdb

Page 12: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

12

ODBC Clients

• Windows 2000/98/95/NT/XP

Page 13: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

13

OCI Client Architecture

Client

Server

OCI ClientApplication Oracle Net

Page 14: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

14

OCI Clients

• Oracle Client– IBM AIX-5L– HP-UX– All Microsoft Windows platforms– Linux– Solaris

• Oracle Instant Client– Clients as above– Macintosh OSX– Smaller client footprint

Page 15: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

15

JDBC Architecture

ClientApplication

JDBC API

server

Page 16: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

16

JDBC Drivers

ODBC C Library

OCI C Library Java Sockets

Oracle Pure Java

Driver

Vender independent

Drivers written by

venderDynamic SQL

Javasoft ODBC OracleOCI OracleThin rdbNative

JDBC Class Library

rdbThin

Page 17: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

17

JavasoftODBC

ODBC C Library

OCI C Library Java Sockets

Oracle Pure Java

Driver

Vender independent

Drivers written by

venderDynamic SQL

Javasoft ODBC OracleOCI OracleThin rdbNative

JDBC Class Library

rdbThin

ODBC C Library

ODBC SQL/Services

Page 18: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

18

OracleOCI

Oracle Pure Java

Driver

Vender independent

Drivers written by

venderJavasoft ODBC OracleOCI OracleThin rdbNative

JDBC Class Library

rdbThin

ODBC C Library

OCI C Library Java Sockets Dynamic SQL

SQL/ServicesOCI Services

Page 19: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

19

OracleThin

Oracle Pure Java

Driver

Vender independent

Drivers written by

venderJavasoft ODBC OracleOCI OracleThin rdbNative

JDBC Class Library

rdbThin

ODBC C Library

OCI C Library Java Sockets Dynamic SQL

ODBC C Library

SQL/ServicesOCI Services

Page 20: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

20

RdbThin

Oracle Pure Java

Driver

Vender independent

Drivers written by

venderJavasoft ODBC OracleOCI OracleThin rdbNative

JDBC Class Library

rdbThin

ODBC C Library

OCI C Library Java Sockets Dynamic SQL

ODBC C Library JDBC ThinServer

Page 21: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

21

RdbNative

Oracle Pure Java

Driver

Vender independent

Drivers written by

venderJavasoft ODBC OracleOCI OracleThin rdbNative

JDBC Class Library

rdbThin

ODBC C Library

OCI C Library Java Sockets Dynamic SQL

ODBC C Library Java Sockets Dynamic SQL

Page 22: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

22

JDBC Clients

• Anywhere JAVA is supported

Page 23: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

23

ADO.NET Architecture

ClientApplication

ADO.NET API

server

Page 24: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

24

ADO.NET Clients

• Microsoft Windows 2000/98/NT/ME/XP

Page 25: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

25

ADO.NET

• Microsoft evolution of the ADO dataaccess model

• Scalable• Stateless• XML

Page 26: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

26

ADO .NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

Page 27: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

27

DataSet

• Data Containers (Caches)• Store data for application use• Data and Metadata

Tables, Rows Columns, Relations

• Populate , Navigate, Update• Can be disconnected from data source

Page 28: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

28

DataView

• designed for use by UI objects• bound to DataSet• Customized views of DataSet

Page 29: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

29

DataProvider

• Connects to the database on behalfof ADO.NET–Connection–Command–DataAdaptor–DataReader

• Provided by Microsoft and third partyVendors

Page 30: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

30

ODBC DataProvider for.NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

SQL/Services(ODBC)

Page 31: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

31

ODBC DataProvider for.NET

• Client Side– Standard Microsoft ODBC .NET data

provider• Server Side

– Access via SQL/Services & ODBC• Available now

Page 32: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

32

Oracle DataProvider for.NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

SQL/Services(OCI Services)

Page 33: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

33

Oracle DataProvider for.NET

• Client Side– Standard Oracle .NET data provider

• Server Side– Access via SQL/Services OCI Service

• Available now

Page 34: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

34

Oracle Rdb DataProviderfor .NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

SQL/Services(TCP/IP)

JDBC Thin Server(TCP/IP)

Page 35: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

35

Oracle Rdb DataProviderfor .NET

• Client Side– Standard .NET data provider API– Supplied as Installable library

• Server Side– Access via SQL/Services or– Access via Oracle JDBC for Rdb Thin Servers

• Beta test Q4 CY06

Page 36: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

36

DataProvider for .NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

Page 37: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

37

DataProvider for .NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

Page 38: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

38

CONNECTION

• Opens up a connection to the data source• Explicit

– conn.OPEN()• Implicit

– When using a DataAdapter

Page 39: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

39

CONNECTION C# example

OracleConnection myConn = new OracleConnection ("DataSource=myEMP; UserId=netUser ; Password=netUser",

RdbConnection myConn = new RdbConnection ("Server=localhost:1701;

Database=diske:[regtest]mf_personnel;

User ID=netUser; Pwd=netUser;");

myConn.Open();

Page 40: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

40

DataProvider for .NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

Page 41: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

41

COMMAND

• Issues command to the underlying datasource

• Creates results stream• methods

– ExecuteReader– ExecuteNonQuery– ExecuteScalar

Page 42: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

42

COMMAND C# exampleString sql = “select * from employees”;

OracleCommand cmd = newOracleCommand(sql,myConn) ;

RdbCommand cmd = newRdbCommand(sql,myConn) ;

OracleDataReader dr = cmd.ExecuteReader();RdbDataReader dr = cmd.ExecuteReader();

// process the resultset(s) here

Page 43: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

43

ExecuteReader C#String sql = “select lastname from employees where employee_id = :id”,conn);

OracleCommand command = new OracleCommand(sql, conn);RdbCommand command = new RdbCommand(sql, conn);

command.Parameters.Add(“id", “00165");command.Prepare();OracleDataReader reader = command.ExecuteReader();RdbDataReader reader = command.ExecuteReader();while(reader.Read()){ Console.WriteLine(“name “+ reader.GetString(0) );}reader.Close();

Page 44: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

44

ExecuteNonQuery C++void insertDepartment( RdbConnection* conn, String* deptNbr, String*

deptName ){ RdbCommand* cmd = new RdbCommand(); cmd->Connection = conn; try { cmd->CommandText = String::Format( S"insert into departments ( department_id, department_name ) values( {0}, '{1}' )", deptNbr, deptName ); cmd->CommandType = CommandType::Text; cmd->ExecuteNonQuery(); } catch(RdbException* e1 ) { Console::WriteLine( "Insert error: {0}",e1->Message->ToString() ); } cmd->Dispose(); }

Page 45: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

45

ExecuteScalar C++void countDepartments( OracleConnection* conn ){ RdbCommand * cmd = new OracleCommand(); cmd->Connection = conn; try { cmd->CommandText = S"select count(*) fromdepartments";

cmd->CommandType = CommandType::Text; Object* numberOfDepartments = cmd->ExecuteScalar(); Console::WriteLine( S"Number of Departments: {0}", numberOfDepartments ); } catch ( OracleException* e1 ) { . . .

Page 46: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

46

DataProvider for .NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

Page 47: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

47

DataAdapter

• Methods + Properties to associate DataSetwith data source

• Retrieve data from data source• Save data into data source• Connect to DB when it needs to fill DataSet

or update DB from DataSet changes

Page 48: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

48

DataProvider for .NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

Page 49: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

49

DataReader

• For large amounts of read only data• read-only, forward-only stream returned

from the database• Only one record at a time is ever present in

memory

Page 50: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

50

Using Oracle Data Provider

• SERVER SIDE– Install and setup Oracle SQL/Services– Create OCI Service

• CLIENT SIDE– Install Oracle 10g Data Provider for .NET– Define OCI service in TNSNAMES.ORA

Page 51: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

51

TNSNAMES.ORA

MY_MFPER =(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = MYAXP.MYCOMPANY.COM) (PORT = 1521) ) (CONNECT_DATA =

(SERVER = DEDICATED)(SERVICE_NAME = MFPER) )

)

Page 52: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

52

Using Oracle Rdb DataProvider

• SERVER SIDE – SQL/Services– Install and setup Oracle SQL/Services– Create Service

• SERVER SIDE – Thin Server– Install Oracle JDBC for Rdb– Start server

• CLIENT SIDE– Install Oracle Rdb Data Provider for .NET

Page 53: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

• White paper on Rdb and .NET• www.oracle.com/rdb• metalink.oracle.com• http://www.hp.com/products/openvms• [email protected]

For More Information

Page 54: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

Q U E S T I O N S

A N S W E R S&

Page 55: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.
Page 56: Connecting to Oracle Rdb from · •OpenVMS •Microsoft Windows 2000/98/95/NT ... –Solaris •Oracle Instant Client –Clients as above –Macintosh OSX –Smaller client footprint.

56

.NET examplevoid insertDepartment( OracleConnection* conn, String* deptNbr, String*

deptName ){ OracleCommand* cmd = new OracleCommand(); cmd->Connection = conn; try { cmd->CommandText = String::Format( S"insert into departments ( department_id, department_name ) values( {0}, '{1}' )", deptNbr, deptName ); cmd->CommandType = CommandType::Text; cmd->ExecuteNonQuery(); } catch(OracleException* e1 ) { Console::WriteLine( "Insert error: {0}",e1->Message->ToString() ); } cmd->Dispose(); }