Drop this one too
[mono.git] / mcs / class / Mono.Data.SqliteClient / Mono.Data.SqliteClient / SqliteParameter.cs
index 278eb06bca463ce57732564c28914c8f869db75e..b0dca170f7e2115f18802e2f566183ff96979072 100644 (file)
 
 using System;
 using System.Data;
+#if NET_2_0
+using System.Data.Common;
+#endif
 
 namespace Mono.Data.SqliteClient
 {
-       public class SqliteParameter : IDbDataParameter
+       public class SqliteParameter :
+#if NET_2_0
+               DbParameter
+#else
+               IDbDataParameter
+#endif
        {
 
                #region Fields
                
                private string name;
                private DbType type;
+               private DbType originalType;
+               private bool typeSet;
                private string source_column;
                private ParameterDirection direction;
                private DataRowVersion row_version;
@@ -48,6 +58,8 @@ namespace Mono.Data.SqliteClient
                private byte precision;
                private byte scale;
                private int size;
+               private bool isNullable;
+               private bool sourceColumnNullMapping;
                
                #endregion
 
@@ -57,12 +69,14 @@ namespace Mono.Data.SqliteClient
                {
                        type = DbType.String;
                        direction = ParameterDirection.Input;
+                       isNullable = true;
                }
                
                public SqliteParameter (string name, DbType type)
                {
                        this.name = name;
                        this.type = type;
+                       isNullable = true;
                }
                
                public SqliteParameter (string name, object value)
@@ -71,6 +85,7 @@ namespace Mono.Data.SqliteClient
                        type = DbType.String;
                        param_value = value;
                        direction = ParameterDirection.Input;
+                       isNullable = true;
                }
                
                public SqliteParameter (string name, DbType type, int size) : this (name, type)
@@ -87,25 +102,48 @@ namespace Mono.Data.SqliteClient
 
                #region Properties
                
+#if NET_2_0
+               override
+#endif
                public DbType DbType {
                        get { return type; }
-                       set { type = value; }
+                       set {
+                               if (!typeSet) {
+                                       originalType = type;
+                                       typeSet = true;
+                               }
+                               type = value;
+                               if (!typeSet)
+                                       originalType = type;
+                       }
                }
-               
+       
+#if NET_2_0
+               override
+#endif
                public ParameterDirection Direction {
                        get { return direction; }
                        set { direction = value; }
                }
-               
+       
+#if NET_2_0
+               override
+#endif
                public bool IsNullable {
-                       get { return true; }
+                       get { return isNullable; }
+#if NET_2_0
+                       set { isNullable = value; }
+#endif
                }
-               
+
+#if NET_2_0
+               override
+#endif
                public string ParameterName {
                        get { return name; }
                        set { name = value; }
                }
-               
+       
                public byte Precision {
                        get { return precision; }
                        set { precision = value; }
@@ -115,22 +153,41 @@ namespace Mono.Data.SqliteClient
                        get { return scale; }
                        set { scale = value; }
                }
-               
+
+#if NET_2_0
+               override
+#endif
                public int Size {
                        get { return size; }
                        set { size = value; }
                }
                
+#if NET_2_0
+               override
+#endif
                public string SourceColumn {
                        get { return source_column; }
                        set { source_column = value; }
                }
-               
+
+#if NET_2_0
+               public override bool SourceColumnNullMapping {
+                       get { return sourceColumnNullMapping; }
+                       set { sourceColumnNullMapping = value; }
+               }
+#endif
+
+#if NET_2_0
+               override
+#endif
                public DataRowVersion SourceVersion {
                        get { return row_version; }
                        set { row_version = value; }
                }
                
+#if NET_2_0
+               override
+#endif
                public object Value {
                        get { return param_value; }
                        set { param_value = value; }
@@ -138,5 +195,13 @@ namespace Mono.Data.SqliteClient
                
                #endregion
 
+               #region methods
+#if NET_2_0
+               public override void ResetDbType ()
+               {
+                       type = originalType;
+               }
+#endif
+               #endregion
        }
 }