diff options
Diffstat (limited to 'web/oracle')
-rwxr-xr-x | web/oracle | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/web/oracle b/web/oracle new file mode 100755 index 00000000000..a83eb776c35 --- /dev/null +++ b/web/oracle @@ -0,0 +1,168 @@ +* Oracle Data Provider + +<ul> + + <li>ADO.NET Data Provider for <a href="http://www.oracle.com/">Oracle</a> databases</li> + + <li>Exists in namespace System.Data.OracleClient and assembly System.Data.OracleClient</li> + + <li>Works on Windows and Linux</li> + + <li>Works with Oracle 8i and 9i.</li> + + <li>Uses the Oracle CLI (Call Level Interface) which is a C library (API) for the Oracle Client + software</li> + + <li>Internally, the OracleClient provider has OCI abstracted to an object-oriented programming model</li> + + <li>Created by Daniel Morgan and Tim Coleman</li> + + <li>Bugs with Mono or the data provider should be reported + in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>. If you + do not have Bugzilla user account, it is free + and easy to + create one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li> + +</ul> + +** Current Status + +<ul> + <li>OracleConnection can connect and disconnect to an Oracle 8i or 9i database on + Windows and Linux via OCI (Oracle Call-level Interface)</li> + + <li>Can have multiple connections with different transactions where each transaction is + separated from the others, so a rollback or commit in one transaction + does not affect the other.</li> + + <li>Can execute simple DML SQL statements, such as, + INSERT a row into the EMP table via the OracleCommand's ExecuteNonQuery method</li> + + <li>Can retrieve data via ExecuteReader and OracleDataReader. Currently, + supports character, numeric, some date data types. ExecuteScalar + also works.</li> + + <li>Simple input parameters (character and numeric data) can now + be used in SQL queries. Output parameters do not yet work.</li> + + <li>OracleException and Error handling exists now.</li> + + <li>Message handling needs to be added for non-critical messages + received from Oracle</li> + + <li>Handling of various data types need to be added.</li> + + <li>Data Adapter exists, and a DataSet can be filled using it.</li> + + <li>Lots of missing functionality and bugs.</li> + + <li>Works with SQL# command-line and GTK# GUI versions.</li> + +</ul> + +** Action Plan + +<ul> + <li>Be able to retrieve results via a data reader (WORKING)</li> + <li>Parameters support (IN PROGRESS)</li> + <li>transactions (WORKING)</li> + <li>Stored Procedures, Functions, and Packages support</li> + <li>Be able to fill a DataTable in a DataSet via a data adapter (IN PROGRESS)</li> + <li>Support for Oracle 8i on Linux and Windows (WORKING)</li> + <li>Support for Oracle 9i on Linux and Windows (WORKING)</li> + <li>Support for Oracle 10g on Linux and Windows [TODO]. Please let us + know on mono-list if Mono OracleClient works with Oracle 10g or not. If not, what errors do you get</li> + <li>Support Large OBjects</li> + <li>Support all the data types</li> + <li>Implement Connection pooling</li> + <li>Security</li> + +</ul> + +** Testing System.Data.OracleClient + +<ul> + <li>Have a working mono and mcs</li> + + <li>Have access to an Oracle 8i or 9i database or download it from + <a href="http://www.oracle.com/">Oracle</a>. If you are connecting + remotely to an Oracle database, you need the Oracle client software. + Registration to the <a href="http://technet.oracle.com/">Oracle Technology Network</a> is free. If installing on Linux, + I suggest you do a lot of searching to see how others installed Oracle on Linux.</li> + + <li>Make sure System.Data.OracleClient.dll assembly is built.</li> + + <li>Take a look at TestOracleClient.cs found at mcs/class/System.Data.OracleClient/Test</li> + + <li>The Data Source is an Oracle TNSNAME</li> + + <li>Has a connection string format: +<pre> +"Data Source=tnsname;User ID=userid;Password=password" +</pre> + </li> + <li>C# Example: +<pre> + using System; + using System.Data; + using System.Data.OracleClient; + + public class Test + { + public static void Main (string[] args) + { + string connectionString = + "Data Source=testdb;" + + "User ID=scott;" + + "Password=tiger;"; + OracleConnection dbcon = null; + dbcon = new OracleConnection (connectionString); + dbcon.Open (); + OracleCommand dbcmd = dbcon.CreateCommand (); + string sql = "SELECT ename, job FROM scott.emp"; + dbcmd.CommandText = sql; + OracleDataReader reader = dbcmd.ExecuteReader (); + while (reader.Read ()) { + string employeeName = (string) reader["ename"]; + string job = (string) reader["job"]; + Console.WriteLine ("Employee Name: {0} Job: {1}", + employeeName, job); + } + // clean up + reader.Close (); + reader = null; + dbcmd.CommandText = sql; + dbcmd.ExecuteNonQuery (); + dbcmd.Dispose (); + dbcmd = null; + dbcon.Close (); + dbcon = null; + } + } +</pre> + </li> + <li>Building C# Example: + <ul> + <li>Save the example to a file, such as, TestExample.cs</li> + <li>Build on Linux: +<pre> + mcs TestExample.cs -r System.Data.dll \ + -r System.Data.OracleClient.dll +</pre> + </li> + <li>Build on Windows: +<pre> + mcs TestExample.cs /r:System.Data.dll \ + /r:System.Data.OracleClient.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + +</ul> + |