Patch submitted by Gert Driesen:
authorJoerg Rosenkranz <joerg.rosenkranz@gmail.com>
Tue, 22 Jun 2004 13:21:08 +0000 (13:21 -0000)
committerJoerg Rosenkranz <joerg.rosenkranz@gmail.com>
Tue, 22 Jun 2004 13:21:08 +0000 (13:21 -0000)
2004-06-19  Gert Driesen <drieseng@users.sourceforge.net>

        * Makefile: added references to System.EnterpriseServices and
        System.Drawing assemblies
        * System.Data.OracleClient.dll: added Assembly/Consts.cs and
        System.Data.OracleClient/OracleMonthSpan.cs
        * OracleCommand.cs: added missing attributes, marked class sealed,
        fixed signature of ExecuteOracleScalar method
        * OracleCommandBuilder.cs: added missing attributes
        * OracleConnection.cs: marked class sealed, added missing attributes,
        stubbed missing propertie, methods and events
        * OracleDataAdapter.cs: added missing attributes, removed extra
        stubbed Dispose method
        * OracleDataReader.cs: stubbed missing methods
        * OracleDataTime.cs: fixed signature and implementation of operator
        * OracleException.cs: marked serializable, added serialization ctor
        * OracleParameter.cs: added missing attributes, marked extra methods
        private
        * OracleParameterCollection.cs: marked class sealed, added missing
        attributes
        * OracleString.cs: added missing methods, added missing operators

svn path=/trunk/mcs/; revision=30112

13 files changed:
mcs/class/System.Data.OracleClient/ChangeLog
mcs/class/System.Data.OracleClient/Makefile
mcs/class/System.Data.OracleClient/System.Data.OracleClient.dll.sources
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleCommand.cs
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleCommandBuilder.cs
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleConnection.cs
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleDataAdapter.cs
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleDataReader.cs
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleDateTime.cs
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleException.cs
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleParameter.cs
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleParameterCollection.cs
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleString.cs

index 0199472e82fb2a32e0a6aa00992e9ba311cc2549..97c914795d182bd2e226fa0670a21ce388076b55 100755 (executable)
@@ -1,3 +1,25 @@
+2004-06-19  Gert Driesen <drieseng@users.sourceforge.net>
+
+       * Makefile: added references to System.EnterpriseServices and
+       System.Drawing assemblies
+       * System.Data.OracleClient.dll: added Assembly/Consts.cs and
+       System.Data.OracleClient/OracleMonthSpan.cs
+       * OracleCommand.cs: added missing attributes, marked class sealed,
+       fixed signature of ExecuteOracleScalar method
+       * OracleCommandBuilder.cs: added missing attributes
+       * OracleConnection.cs: marked class sealed, added missing attributes,
+       stubbed missing propertie, methods and events
+       * OracleDataAdapter.cs: added missing attributes, removed extra
+       stubbed Dispose method
+       * OracleDataReader.cs: stubbed missing methods
+       * OracleDataTime.cs: fixed signature and implementation of operator
+       * OracleException.cs: marked serializable, added serialization ctor
+       * OracleParameter.cs: added missing attributes, marked extra methods
+       private
+       * OracleParameterCollection.cs: marked class sealed, added missing
+       attributes
+       * OracleString.cs: added missing methods, added missing operators
+
 2004-05-27     Joerg Rosenkranz <joergr@voelcker.com>
 
        * System.Data.OracleClient/OracleCommandBuilder.cs:
index 8ff13eefaec00d17cab56450653f138af5f4d81c..f5bc738f1a9e5bca3949dd8ca6d8c45c39a2940f 100644 (file)
@@ -5,6 +5,8 @@ include ../../build/rules.make
 LIBRARY = System.Data.OracleClient.dll
 LIB_MCS_FLAGS = /r:$(corlib) /r:System.dll \
        /r:System.Xml.dll /r:System.Data.dll \
+       /r:System.EnterpriseServices.dll \
+       /r:System.Drawing.dll \
        /nowarn:649 /nowarn:169
 NO_TEST = yes
 EXTRA_DISTFILES = Test/TestOracleClient.cs
index fed248f792207daac521594f2bde64d14f0d2c43..4bd19d2c9245d87b43048d5b046b9daf1d343c44 100755 (executable)
@@ -1,5 +1,6 @@
 Assembly/AssemblyInfo.cs
 Assembly/Locale.cs
+Assembly/Consts.cs
 System.Data.OracleClient.Oci/OciAttributeType.cs
 System.Data.OracleClient.Oci/OciBindHandle.cs
 System.Data.OracleClient.Oci/OciCalls.cs
@@ -44,6 +45,7 @@ System.Data.OracleClient/OracleInfoMessageEventArgs.cs
 System.Data.OracleClient/OracleInfoMessageEventHandler.cs
 System.Data.OracleClient/OracleLob.cs
 System.Data.OracleClient/OracleLobOpenMode.cs
+System.Data.OracleClient/OracleMonthSpan.cs
 System.Data.OracleClient/OracleNumber.cs
 System.Data.OracleClient/OracleParameterCollection.cs
 System.Data.OracleClient/OracleParameter.cs
index f51632d37ed7a0907beb7894d82ea6034a147928..0eed34ac856548ec3be7160c41e0f3bea3093fc3 100755 (executable)
@@ -21,9 +21,12 @@ using System;
 using System.ComponentModel;
 using System.Data;
 using System.Data.OracleClient.Oci;
+using System.Drawing.Design;
 
 namespace System.Data.OracleClient {
-       public class OracleCommand : Component, ICloneable, IDbCommand
+       [Designer ("Microsoft.VSDesigner.Data.VS.OracleCommandDesigner, " + Consts.AssemblyMicrosoft_VSDesigner)]
+       [ToolboxItem (true)]
+       public sealed class OracleCommand : Component, ICloneable, IDbCommand
        {
                #region Fields
 
@@ -68,28 +71,38 @@ namespace System.Data.OracleClient {
                        UpdatedRowSource = UpdateRowSource.Both;
                        DesignTimeVisible = false;
 
-                        parameters = new OracleParameterCollection (this);
+                       parameters = new OracleParameterCollection (this);
                }
 
                #endregion // Constructors
 
                #region Properties
 
+               [DefaultValue ("")]
+               [RefreshProperties (RefreshProperties.All)]
+               [Editor ("Microsoft.VSDesigner.Data.Oracle.Design.OracleCommandTextEditor, " + Consts.AssemblyMicrosoft_VSDesigner, typeof(UITypeEditor))]
                public string CommandText {
                        get { return commandText; }
                        set { commandText = value; }
                }
 
+               [RefreshProperties (RefreshProperties.All)]
+               [DefaultValue (CommandType.Text)]
                public CommandType CommandType {
                        get { return commandType; }
                        set { commandType = value; }
                }
 
+               [DefaultValue (null)]
+               [Editor ("Microsoft.VSDesigner.Data.Design.DbConnectionEditor, " + Consts.AssemblyMicrosoft_VSDesigner, typeof(UITypeEditor))]
                public OracleConnection Connection {
                        get { return connection; }
                        set { connection = value; }
                }
 
+               [DefaultValue (true)]
+               [Browsable (false)]
+               [DesignOnly (true)]
                public bool DesignTimeVisible {
                        get { return designTimeVisible; }
                        set { designTimeVisible = value; }
@@ -108,6 +121,8 @@ namespace System.Data.OracleClient {
                        set { }
                }
 
+               [Editor ("Microsoft.VSDesigner.Data.Design.DbConnectionEditor, " + Consts.AssemblyMicrosoft_VSDesigner, typeof(UITypeEditor))]
+               [DefaultValue (null)]
                IDbConnection IDbCommand.Connection {
                        get { return Connection; }
                        set { 
@@ -130,15 +145,19 @@ namespace System.Data.OracleClient {
                        }
                }
 
+               [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
                public OracleParameterCollection Parameters {
                        get { return parameters; }
                }
 
+               [Browsable (false)]
+               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
                public OracleTransaction Transaction {
                        get { return transaction; }
                        set { transaction = value; }
                }
 
+               [DefaultValue (UpdateRowSource.Both)]
                public UpdateRowSource UpdatedRowSource {
                        get { return updatedRowSource; }
                        set { updatedRowSource = value; }
@@ -266,7 +285,7 @@ namespace System.Data.OracleClient {
                }
 
                [MonoTODO]
-               public object ExecuteOracleScalar (out OracleString rowid)
+               public object ExecuteOracleScalar ()
                {
                        throw new NotImplementedException ();
                }
index 1cfacd82d086d11a53d5d87ef8334e753cdcfb4f..9822246a434612719db39d7d0d407b9acd6a4088 100755 (executable)
@@ -42,7 +42,6 @@ namespace System.Data.OracleClient
 
                #region Properties
 
-               [DataSysDescriptionAttribute ("The DataAdapter for which to automatically generate OracleCommands")]
                [DefaultValue (null)]
                public OracleDataAdapter DataAdapter {
                        get {
@@ -54,7 +53,6 @@ namespace System.Data.OracleClient
                }
 
                [BrowsableAttribute (false)]
-               [DataSysDescriptionAttribute ("The prefix string wrapped around sql objects")]
                 [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
                public string QuotePrefix {
                        get {
@@ -66,8 +64,7 @@ namespace System.Data.OracleClient
                }
 
                [BrowsableAttribute (false)]
-                [DataSysDescriptionAttribute ("The suffix string wrapped around sql objects")]
-                [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
+               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
                public string QuoteSuffix {
                        get {
                                return quoteSuffix;
index 05b4d5bba42285ce9a3e7f35a2248da350203f43..06eb0872e6e1eef88a4e91191f33ba721f7c52b4 100755 (executable)
@@ -28,6 +28,8 @@ using System.Collections.Specialized;
 using System.ComponentModel;
 using System.Data;
 using System.Data.OracleClient.Oci;
+using System.Drawing.Design;
+using System.EnterpriseServices;
 using System.Text;
 
 namespace System.Data.OracleClient 
@@ -39,7 +41,8 @@ namespace System.Data.OracleClient
                public string Database;
        }
 
-       public class OracleConnection : Component, ICloneable, IDbConnection
+       [DefaultEvent ("InfoMessage")]
+       public sealed class OracleConnection : Component, ICloneable, IDbConnection
        {
                #region Fields
 
@@ -97,15 +100,38 @@ namespace System.Data.OracleClient
                        get { return oci.ServiceContext; }
                }
 
+               [MonoTODO]
+               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+               public string DataSource {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               [Browsable (false)]
+               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
                public ConnectionState State {
                        get { return state; }
                }
 
+               [DefaultValue ("")]
+               [RecommendedAsConfigurable (true)]
+               [RefreshProperties (RefreshProperties.All)]
+               [Editor ("Microsoft.VSDesigner.Data.Oracle.Design.OracleConnectionStringEditor, " + Consts.AssemblyMicrosoft_VSDesigner, typeof(UITypeEditor))]
                public string ConnectionString {
                        get { return connectionString; }
                        set { SetConnectionString (value); }
                }
 
+               [MonoTODO]
+               [Browsable (false)]
+               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+               public string ServerVersion {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
                internal OciGlue Oci {
                        get { return oci; }
                }
@@ -182,6 +208,18 @@ namespace System.Data.OracleClient
                        GC.SuppressFinalize (this);
                }
 
+               [MonoTODO]
+               protected override void Dispose (bool disposing)
+               {
+                       base.Dispose (disposing);
+               }
+
+               [MonoTODO]
+               public void EnlistDistributedTransaction (ITransaction distributedTransaction)
+               {
+                       throw new NotImplementedException ();
+               }
+
                public void Open () 
                {
                        oci.CreateConnection (conInfo);
@@ -283,5 +321,8 @@ namespace System.Data.OracleClient
                }
 
                #endregion // Methods
+
+               public event OracleInfoMessageEventHandler InfoMessage;
+               public event StateChangeEventHandler StateChange;
        }
 }
index b9ebaa2856798131c825078efe3dabc44b93c28c..41f377e1d6b2e0d35f96369b2fcf03917b56361d 100644 (file)
@@ -25,8 +25,12 @@ using System;
 using System.ComponentModel;
 using System.Data;
 using System.Data.Common;
+using System.Drawing.Design;
 
 namespace System.Data.OracleClient {
+       [DefaultEvent ("RowUpdated")]
+       [Designer ("Microsoft.VSDesigner.Data.VS.OracleDataAdapterDesigner, " + Consts.AssemblyMicrosoft_VSDesigner)]
+       [ToolboxItem ("Microsoft.VSDesigner.Data.VS.OracleDataAdapterToolboxItem, " + Consts.AssemblyMicrosoft_VSDesigner)]
        public sealed class OracleDataAdapter : DbDataAdapter, IDbDataAdapter 
        {
                #region Fields
@@ -68,21 +72,29 @@ namespace System.Data.OracleClient {
 
                #region Properties
 
+               [DefaultValue (null)]
+               [Editor ("Microsoft.VSDesigner.Data.Design.DBCommandEditor, " + Consts.AssemblyMicrosoft_VSDesigner, typeof(UITypeEditor))]
                public OracleCommand DeleteCommand {
                        get { return deleteCommand; }
                        set { deleteCommand = value; }
                }
 
+               [DefaultValue (null)]
+               [Editor ("Microsoft.VSDesigner.Data.Design.DBCommandEditor, " + Consts.AssemblyMicrosoft_VSDesigner, typeof(UITypeEditor))]
                public OracleCommand InsertCommand {
                        get { return insertCommand; }
                        set { insertCommand = value; }
                }
 
+               [DefaultValue (null)]
+               [Editor ("Microsoft.VSDesigner.Data.Design.DBCommandEditor, " + Consts.AssemblyMicrosoft_VSDesigner, typeof(UITypeEditor))]
                public OracleCommand SelectCommand {
                        get { return selectCommand; }
                        set { selectCommand = value; }
                }
 
+               [DefaultValue (null)]
+               [Editor ("Microsoft.VSDesigner.Data.Design.DBCommandEditor, " + Consts.AssemblyMicrosoft_VSDesigner, typeof(UITypeEditor))]
                public OracleCommand UpdateCommand {
                        get { return updateCommand; }
                        set { updateCommand = value; }
@@ -144,17 +156,6 @@ namespace System.Data.OracleClient {
                        return new OracleRowUpdatingEventArgs (dataRow, command, statementType, tableMapping);
                }
 
-               protected override void Dispose (bool disposing)
-               {
-                       if (!disposed) {
-                               if (disposing) {
-                                       // Release managed resources
-                               }
-                               // Release unmanaged resources
-                               disposed = true;
-                       }
-               }
-
                protected override void OnRowUpdated (RowUpdatedEventArgs value) 
                {
                        if (RowUpdated != null)
index d3d3e840f3377a04a737e72a98c8313e27e0e038..ebd5a73762e25a0ce7cbe0972f2ae2865d4476cb 100644 (file)
@@ -305,6 +305,42 @@ namespace System.Data.OracleClient {
                        return new OracleNumber ((decimal) GetValue (i));
                }
 
+               [MonoTODO]
+               public OracleDateTime GetOracleDateTime (int i)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public OracleMonthSpan GetOracleMonthSpan (int i)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public OracleString GetOracleString (int i)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public object GetOracleValue (int i)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public int GetOracleValues (object[] values)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public OracleTimeSpan GetOracleTimeSpan (int i)
+               {
+                       throw new NotImplementedException ();
+               }
+
                public int GetOrdinal (string name)
                {
                        int i;
index cc5b9a1556516046ac3cf4f850f42bf374abf201..d3f70cf9f407bf3d30af99fcf027dbeeb29bcef7 100644 (file)
@@ -235,9 +235,9 @@ namespace System.Data.OracleClient {
                        return x.Value;
                }
 
-               public static explicit operator OracleDateTime (DateTime x)
+               public static explicit operator OracleDateTime (string x)
                {
-                       return new OracleDateTime (x);
+                       return new OracleDateTime (DateTime.Parse (x));
                }
 
                #endregion // Operators and Type Conversions
index ed97de1523e9d89331426c25cc420c8c61b73e45..3571948baf20970754f04856d249eb534aa56cb0 100644 (file)
 //
 
 using System;
+using System.Runtime.Serialization;
 
 namespace System.Data.OracleClient {
+       [Serializable]
        public sealed class OracleException : SystemException
        {
                #region Fields
@@ -36,6 +38,12 @@ namespace System.Data.OracleClient {
                        this.message = message;
                }
 
+               private OracleException (SerializationInfo si, StreamingContext sc) : base(si, sc)
+               {
+                       message = si.GetString ("message");
+                       code = si.GetInt32 ("source");
+               }
+
                #endregion // Constructors
 
                #region Properties
index d8e6af20083d3f44a5fe19005fc662534265bb19..32c116bf4bf8a8aecf08a3a97cb411fc2a96cbab 100644 (file)
@@ -20,9 +20,11 @@ using System.Collections;
 using System.ComponentModel;
 using System.Data;
 using System.Data.OracleClient.Oci;
+using System.Globalization;
 using System.Runtime.InteropServices;
 
 namespace System.Data.OracleClient {
+       [TypeConverter (typeof(OracleParameter.OracleParameterConverter))]
        public sealed class OracleParameter : MarshalByRefObject, IDbDataParameter, IDataParameter, ICloneable
        {
                #region Fields
@@ -98,46 +100,63 @@ namespace System.Data.OracleClient {
                        set { container = value; }
                }
 
+               [Browsable (false)]
+               [RefreshProperties (RefreshProperties.All)]
+               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
                public DbType DbType {
                        get { return dbType; }
                        set { SetDbType (value); }
                }
 
+               [DefaultValue (ParameterDirection.Input)]
+               [RefreshProperties (RefreshProperties.All)]
                public ParameterDirection Direction {
                        get { return direction; }
                        set { direction = value; }
                }
 
+               [Browsable (false)]
+               [DesignOnly (true)]
+               [DefaultValue (false)]
+               [EditorBrowsable (EditorBrowsableState.Never)]
                public bool IsNullable {
                        get { return isNullable; }
                        set { isNullable = value; }
                }
 
+               [DefaultValue (0)]
+               [Browsable (false)]
                public int Offset {
                        get { return offset; }
                        set { offset = value; }
                }
 
+               [DefaultValue (OracleType.VarChar)]
+               [RefreshProperties (RefreshProperties.All)]
                public OracleType OracleType {
                        get { return oracleType; }
                        set { SetOracleType (value); }
                }
                
+               [DefaultValue ("")]
                public string ParameterName {
                        get { return name; }
                        set { name = value; }
                }
 
+               [DefaultValue (0)]
                public byte Precision {
                        get { return precision; }
                        set { /* NO EFFECT*/ }
                }
 
+               [DefaultValue (0)]
                public byte Scale {
                        get { return scale; }
                        set { /* NO EFFECT*/ }
                }
 
+               [DefaultValue (0)]
                public int Size {
                        get { return size; }
                        set { 
@@ -146,16 +165,21 @@ namespace System.Data.OracleClient {
                        }
                }
 
+               [DefaultValue ("")]
                public string SourceColumn {
                        get { return srcColumn; }
                        set { srcColumn = value; }
                }
 
+               [DefaultValue (DataRowVersion.Current)]
                public DataRowVersion SourceVersion {
                        get { return srcVersion; }
                        set { srcVersion = value; }
                }
 
+               [DefaultValue (null)]
+               [RefreshProperties (RefreshProperties.All)]
+               [TypeConverter (typeof(StringConverter))]
                public object Value {
                        get { return this.value; }
                        set { this.value = value; }
@@ -275,7 +299,7 @@ namespace System.Data.OracleClient {
                        return value.ToString ().Length;
                }
 
-               public void SetDbType (DbType type)
+               private void SetDbType (DbType type)
                {
                        string exception = String.Format ("No mapping exists from DbType {0} to a known OracleType.", type);
                        switch (type) {
@@ -344,7 +368,7 @@ namespace System.Data.OracleClient {
 
                }
 
-               public void SetOracleType (OracleType type)
+               private void SetOracleType (OracleType type)
                {
                        string exception = String.Format ("No mapping exists from OracleType {0} to a known DbType.", type);
                        switch (type) {
@@ -437,5 +461,24 @@ namespace System.Data.OracleClient {
                }
 
                #endregion // Methods
+
+               internal sealed class OracleParameterConverter : ExpandableObjectConverter
+               {
+                       public OracleParameterConverter ()
+                       {
+                       }
+
+                       [MonoTODO]
+                       public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
+                       {
+                               throw new NotImplementedException ();
+                       }
+
+                       [MonoTODO]
+                       public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
        }
 }
index 1817eb38082162d4dfc2ffbc95bd2069386fa11e..aaaeeb53527f8608eeaf5379cbb0d9479e26c6ff 100644 (file)
@@ -20,9 +20,13 @@ using System.Collections;
 using System.ComponentModel;
 using System.Data;
 using System.Data.OracleClient.Oci;
+using System.Drawing.Design;
+using System.Reflection;
 
 namespace System.Data.OracleClient {
-       public class OracleParameterCollection : MarshalByRefObject, IDataParameterCollection, IList, ICollection, IEnumerable
+       [ListBindable (false)]
+       [Editor ("Microsoft.VSDesigner.Data.Oracle.Design.DBParametersEditor, " + Consts.AssemblyMicrosoft_VSDesigner, typeof(UITypeEditor))]
+       public sealed class OracleParameterCollection : MarshalByRefObject, IDataParameterCollection, IList, ICollection, IEnumerable
        {
                #region Fields
 
@@ -125,8 +129,8 @@ namespace System.Data.OracleClient {
                {
                        if (!(value is OracleParameter))
                                throw new InvalidCastException ("The parameter was not an OracleParameter.");
-                        Add ((OracleParameter) value);
-                        return IndexOf (value);
+                       Add ((OracleParameter) value);
+                       return IndexOf (value);
                }
 
                public OracleParameter Add (OracleParameter value)
@@ -135,7 +139,7 @@ namespace System.Data.OracleClient {
                                throw new ArgumentException ("The OracleParameter specified in the value parameter is already added to this or another OracleParameterCollection.");
                        value.Container = this;
                        list.Add (value);
-                        return value;
+                       return value;
                }
 
                public OracleParameter Add (string parameterName, object value)
index 57e10018604675574bead5d0b0c7afccb2374ce6..dced2f4f7439685d8ba68ef5755d1cce7235db7d 100644 (file)
@@ -77,24 +77,31 @@ namespace System.Data.OracleClient
                                return this.value.CompareTo (((OracleString) value).Value);
                }
 
+               [MonoTODO]
+               public static OracleBoolean GreaterThan (OracleString x, OracleString y)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public static OracleBoolean GreaterThanOrEqual (OracleString x, OracleString y)
+               {
+                       throw new NotImplementedException ();
+               }
+
                public static OracleBoolean LessThan (OracleString x, OracleString y)
                {
-                       return (!x.notNull || !y.notNull) ?
-                               OracleBoolean.Null :
-                               new OracleBoolean (String.Compare (x.value, y.value, false, CultureInfo.InvariantCulture) < 0);
+                       return (x < y);
                }
 
                public static OracleBoolean LessThanOrEqual (OracleString x, OracleString y)
                {
-                       return (!x.notNull || !y.notNull) ?
-                               OracleBoolean.Null : new OracleBoolean (String.Compare (x.value, y.value, false, CultureInfo.InvariantCulture) <= 0);
+                       return (x <= y);
                }
 
                public static OracleString Concat (OracleString x, OracleString y)
                {
-                       return (x.notNull && y.notNull) ?
-                               new OracleString (x.value + y.value) :
-                               Null;
+                       return x + y;
                }
 
                public override int GetHashCode ()
@@ -117,14 +124,12 @@ namespace System.Data.OracleClient
 
                public static OracleBoolean Equals (OracleString x, OracleString y)
                {
-                       return (!x.notNull || !y.notNull) ?
-                               OracleBoolean.Null : new OracleBoolean (x.value == y.value);
+                       return (x == y);
                }
 
                public static OracleBoolean NotEquals (OracleString x, OracleString y)
                {
-                       return (!x.notNull || !y.notNull) ?
-                               OracleBoolean.Null : x.value != y.value;
+                       return (x != y);
                }
 
                public override string ToString ()
@@ -133,5 +138,63 @@ namespace System.Data.OracleClient
                }
 
                #endregion // Methods
+
+               #region Operators
+
+               public static OracleString operator + (OracleString x, OracleString y)
+               {
+                       return (x.notNull && y.notNull) ?
+                               new OracleString (x.value + y.value) :
+                               Null;
+               }
+
+               public static OracleBoolean operator == (OracleString x, OracleString y)
+               {
+                       return (!x.notNull || !y.notNull) ?
+                               OracleBoolean.Null : new OracleBoolean (x.value == y.value);
+               }
+
+               public static explicit operator string (OracleString x)
+               {
+                       return x.Value;
+               }
+
+               [MonoTODO]
+               public static OracleBoolean operator > (OracleString x, OracleString y)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public static OracleBoolean operator >= (OracleString x, OracleString y)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static implicit operator OracleString (string s)
+               {
+                       return new OracleString (s);
+               }
+
+               public static OracleBoolean operator != (OracleString x, OracleString y)
+               {
+                       return (!x.notNull || !y.notNull) ?
+                               OracleBoolean.Null : x.value != y.value;
+               }
+
+               public static OracleBoolean operator < (OracleString x, OracleString y)
+               {
+                       return (!x.notNull || !y.notNull) ?
+                               OracleBoolean.Null :
+                               new OracleBoolean (String.Compare (x.value, y.value, false, CultureInfo.InvariantCulture) < 0);
+               }
+
+               public static OracleBoolean operator <= (OracleString x, OracleString y)
+               {
+                       return (!x.notNull || !y.notNull) ?
+                               OracleBoolean.Null : new OracleBoolean (String.Compare (x.value, y.value, false, CultureInfo.InvariantCulture) <= 0);
+               }
+
+               #endregion // Operators
        }
 }