Connecting to Oracle Rdb...

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

Transcript of Connecting to Oracle Rdb...

Page 1: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

1

Oracle Rdb Technical ForumsConnecting to Oracle Rdb

from .NETJim Murray

Oracle New England Development Centre

Page 2: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

Agenda

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

Page 3: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

6

.NET data access

ClientApplication

ADO.NET API server

Proprietary API

.NET Web Services

.NET data source

Page 7: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

8

SQL/Services

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

Page 9: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

9

SQLSRV ClientArchitecture

Client using SQL/Services client API directly

ClientApplication

SQL/ServicesClient API

server

Page 10: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

11

SQLSRV ClientArchitecture

serverClient

ApplicationODBC forOracle Rdb

SQL/ServicesClient API

Client using ODBC for Oracle Rdb

Page 12: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

12

ODBC Clients

• Windows 2000/98/95/NT/XP

Page 13: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

13

OCI Client Architecture

Client

Server

OCI ClientApplication Oracle Net

Page 14: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

15

JDBC Architecture

ClientApplication

JDBC API

server

Page 16: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

22

JDBC Clients

• Anywhere JAVA is supported

Page 23: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

23

ADO.NET Architecture

ClientApplication

ADO.NET API

server

Page 24: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

24

ADO.NET Clients

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

Page 25: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

25

ADO.NET

• Microsoft evolution of the ADO dataaccess model

• Scalable• Stateless• XML

Page 26: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

26

ADO .NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

Page 27: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

28

DataView

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

Page 29: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

36

DataProvider for .NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

Page 37: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

37

DataProvider for .NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

Page 38: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

38

CONNECTION

• Opens up a connection to the data source• Explicit

– conn.OPEN()• Implicit

– When using a DataAdapter

Page 39: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

40

DataProvider for .NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

Page 41: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

41

COMMAND

• Issues command to the underlying datasource

• Creates results stream• methods

– ExecuteReader– ExecuteNonQuery– ExecuteScalar

Page 42: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

46

DataProvider for .NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

Page 47: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

48

DataProvider for .NET

JDBC Class LibrarySystem.Data

Dataset

ADO.NET

UI

DataAdapter

Command

Connection

DataReader

Dataview

Page 49: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

• 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 fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

Q U E S T I O N S

A N S W E R S&

Page 55: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider
Page 56: Connecting to Oracle Rdb fromdownload.oracle.com/.../rdb/pdf/forums_2006/rdbtf06rs_06_connectdot… · Agenda •.NET •Connectivity Overview •ADO.NET Overview •Oracle Data Provider

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(); }