| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- //
- // Mainsoft.Data.Jdbc.Providers.OracleProvider
- //
- // Authors:
- // Konstantin Triger <[email protected]>
- // Boris Kirzner <[email protected]>
- //
- // (C) 2006 Mainsoft Corporation (http://www.mainsoft.com)
- //
- //
- // Permission is hereby granted, free of charge, to any person obtaining
- // a copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to
- // permit persons to whom the Software is furnished to do so, subject to
- // the following conditions:
- //
- // The above copyright notice and this permission notice shall be
- // included in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- //
- using System;
- using System.Collections;
- using Mainsoft.Data.Configuration;
- using System.Reflection;
- namespace Mainsoft.Data.Jdbc.Providers
- {
- public class OracleProvider : GenericProvider
- {
- #region Consts
- private const string Port = "Port";
- #endregion //Consts
- #region Fields
- #endregion // Fields
- #region Constructors
- public OracleProvider (IDictionary providerInfo) : base (providerInfo)
- {
- }
- #endregion // Constructors
- #region Properties
- #endregion // Properties
- #region Methods
- public override IConnectionStringDictionary GetConnectionStringBuilder (string connectionString)
- {
- IConnectionStringDictionary conectionStringBuilder = base.GetConnectionStringBuilder (connectionString);
- string port = (string) conectionStringBuilder [Port];
- if (port == null || port.Length == 0) {
- port = (string) ProviderInfo [Port];
- conectionStringBuilder.Add (Port, port);
- }
-
- return conectionStringBuilder;
- }
- public override java.sql.Connection GetConnection(IConnectionStringDictionary conectionStringBuilder) {
- return new OracleConnection(base.GetConnection (conectionStringBuilder));
- }
- #endregion //Methods
- #region OracleConnection
- sealed class OracleConnection : Connection {
- public OracleConnection(java.sql.Connection connection)
- : base(connection) {}
- public override java.sql.CallableStatement prepareCall(string arg_0) {
- return base.prepareCall (arg_0);
- }
- public override java.sql.CallableStatement prepareCall(string arg_0, int arg_1, int arg_2) {
- return new OracleCallableStatement(base.prepareCall (arg_0, arg_1, arg_2));
- }
- public override java.sql.CallableStatement prepareCall(string arg_0, int arg_1, int arg_2, int arg_3) {
- return new OracleCallableStatement(base.prepareCall (arg_0, arg_1, arg_2, arg_3));
- }
- public override java.sql.PreparedStatement prepareStatement(string arg_0) {
- return new OraclePreparedStatement(base.prepareStatement (arg_0));
- }
- public override java.sql.PreparedStatement prepareStatement(string arg_0, int arg_1) {
- return new OraclePreparedStatement(base.prepareStatement (arg_0, arg_1));
- }
- public override java.sql.PreparedStatement prepareStatement(string arg_0, int arg_1, int arg_2) {
- return new OraclePreparedStatement(base.prepareStatement (arg_0, arg_1, arg_2));
- }
- public override java.sql.PreparedStatement prepareStatement(string arg_0, int arg_1, int arg_2, int arg_3) {
- return new OraclePreparedStatement(base.prepareStatement (arg_0, arg_1, arg_2, arg_3));
- }
- public override java.sql.PreparedStatement prepareStatement(string arg_0, int[] arg_1) {
- return new OraclePreparedStatement(base.prepareStatement (arg_0, arg_1));
- }
- public override java.sql.PreparedStatement prepareStatement(string arg_0, string[] arg_1) {
- return new OraclePreparedStatement(base.prepareStatement (arg_0, arg_1));
- }
- }
- #endregion
- sealed class OraclePreparedStatement : PreparedStatement, IPreparedStatement {
- readonly MethodInfo _info;
- public OraclePreparedStatement(java.sql.PreparedStatement statement)
- : base(statement) {
- _info = Wrapped.GetType().GetMethod("setFixedCHAR");
- }
- #region IPreparedStatement Members
- public void setBit(int parameterIndex, int value) {
- base.setInt(parameterIndex, value);
- }
- public void setChar(int parameterIndex, string value) {
- if (_info == null) {
- base.setString(parameterIndex, value);
- return;
- }
- _info.Invoke(Wrapped, new object[] {
- new java.lang.Integer(parameterIndex),
- value});
- }
- public void setNumeric(int parameterIndex, java.math.BigDecimal value) {
- base.setBigDecimal(parameterIndex, value);
- }
- public void setReal(int parameterIndex, double value) {
- base.setDouble(parameterIndex, value);
- }
- #endregion
- }
- sealed class OracleCallableStatement : CallableStatement, IPreparedStatement {
- readonly MethodInfo _info;
- public OracleCallableStatement(java.sql.CallableStatement statement)
- : base(statement) {
- _info = Wrapped.GetType().GetMethod("setFixedCHAR");
- }
- #region IPreparedStatement Members
- public void setBit(int parameterIndex, int value) {
- base.setInt(parameterIndex, value);
- }
- public void setChar(int parameterIndex, string value) {
- if (_info == null) {
- base.setString(parameterIndex, value);
- return;
- }
- _info.Invoke(Wrapped, new object[] {
- new java.lang.Integer(parameterIndex),
- value});
- }
- public void setNumeric(int parameterIndex, java.math.BigDecimal value) {
- base.setBigDecimal(parameterIndex, value);
- }
- public void setReal(int parameterIndex, double value) {
- base.setDouble(parameterIndex, value);
- }
- #endregion
- }
- }
- }
|