X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FMono.Data.SqliteClient%2FMono.Data.SqliteClient%2FSqliteParameter.cs;h=b0dca170f7e2115f18802e2f566183ff96979072;hb=73e68c19840c913c52bbe0bd53e2621ca3fe71c2;hp=278eb06bca463ce57732564c28914c8f869db75e;hpb=5bbfa8860b090e465a3aa45edeb9c94481ef1a22;p=mono.git diff --git a/mcs/class/Mono.Data.SqliteClient/Mono.Data.SqliteClient/SqliteParameter.cs b/mcs/class/Mono.Data.SqliteClient/Mono.Data.SqliteClient/SqliteParameter.cs index 278eb06bca4..b0dca170f7e 100644 --- a/mcs/class/Mono.Data.SqliteClient/Mono.Data.SqliteClient/SqliteParameter.cs +++ b/mcs/class/Mono.Data.SqliteClient/Mono.Data.SqliteClient/SqliteParameter.cs @@ -31,16 +31,26 @@ 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 } }