New tests.
[mono.git] / mcs / class / System.Data / System.Data.Common / DbDataAdapter.cs
index cebbe01838358f03712b1bbbfb7da7b796c52258..3fdc3ca11052a0f53df4ee8ba5d95bd44fef5082 100644 (file)
@@ -5,13 +5,14 @@
 //   Rodrigo Moya (rodrigo@ximian.com)
 //   Tim Coleman (tim@timcoleman.com)
 //   Sureshkumar T <tsureshkumar@novell.com>
+//   Veerapuram Varadhan  <vvaradhan@novell.com>
 //
 // (C) Ximian, Inc
 // Copyright (C) Tim Coleman, 2002-2003
 //
 
 //
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2004, 2009 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -84,51 +85,83 @@ namespace System.Data.Common
                }
 
                IDbCommand IDbDataAdapter.SelectCommand {
-                       get { return _selectCommand; }
-                       set { _selectCommand = value; }
+                   get { return ((DbDataAdapter)this).SelectCommand; }
+                   set { ((DbDataAdapter)this).SelectCommand = (DbCommand)value; }
                }
 
                IDbCommand IDbDataAdapter.UpdateCommand{
-                       get { return _updateCommand; }
-                       set { _updateCommand = value; }
+                   get { return ((DbDataAdapter)this).UpdateCommand; }
+                   set { ((DbDataAdapter)this).UpdateCommand = (DbCommand)value; }
                }
-
+               
                IDbCommand IDbDataAdapter.DeleteCommand{
-                       get { return _deleteCommand; }
-                       set { _deleteCommand = value; }
+                   get { return ((DbDataAdapter)this).DeleteCommand; }
+                   set { ((DbDataAdapter)this).DeleteCommand = (DbCommand)value; }
                }
 
                IDbCommand IDbDataAdapter.InsertCommand{
-                       get { return _insertCommand; }
-                       set { _insertCommand = value; }
+                   get { return ((DbDataAdapter)this).InsertCommand; }
+                   set { ((DbDataAdapter)this).InsertCommand = (DbCommand)value; }
                }
                
                [Browsable (false)]
                [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
                public DbCommand SelectCommand {
-                       get { return (DbCommand) ((IDbDataAdapter) this).SelectCommand; }
-                       set { ((IDbDataAdapter) this).SelectCommand = value; }
+                   get {
+                                       return (DbCommand) _selectCommand;
+                                       //return (DbCommand) ((IDbDataAdapter)this).SelectCommand; 
+                       }
+                   set {
+                                       if (_selectCommand != value) {
+                                               _selectCommand = value;
+                                               ((IDbDataAdapter)this).SelectCommand = value; 
+                                       }
+                       }
                }
 
                [Browsable (false)]
                [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
                public DbCommand DeleteCommand {
-                       get { return (DbCommand) ((IDbDataAdapter) this).DeleteCommand; }
-                       set { ((IDbDataAdapter) this).DeleteCommand = value; }
+                   get {
+                                       return (DbCommand) _deleteCommand;
+                                       //return (DbCommand) ((IDbDataAdapter)this).DeleteCommand; 
+                       }
+                   set {
+                                       if (_deleteCommand != value) {
+                                               _deleteCommand = value;
+                                               ((IDbDataAdapter)this).DeleteCommand = value; 
+                                       }
+                       }
                }
 
                [Browsable (false)]
                [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
                public DbCommand InsertCommand {
-                       get { return (DbCommand) ((IDbDataAdapter) this).InsertCommand; }
-                       set { ((IDbDataAdapter) this).InsertCommand = value; }
+                   get {
+                                       return (DbCommand) _insertCommand;
+                                       //return (DbCommand) ((IDbDataAdapter)this).InsertCommand; 
+                       }
+                   set {
+                                       if (_insertCommand != value) {
+                                               _insertCommand = value;
+                                               ((IDbDataAdapter)this).InsertCommand = value; 
+                                       }
+                       }
                }
 
                [Browsable (false)]
                [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
                public DbCommand UpdateCommand {
-                       get { return (DbCommand) ((IDbDataAdapter) this).UpdateCommand; }
-                       set { ((IDbDataAdapter) this).UpdateCommand = value; }
+                   get {
+                                       return (DbCommand) _updateCommand;
+                                       //return (DbCommand) ((IDbDataAdapter)this).DeleteCommand; 
+                       }
+                   set {
+                                       if (_updateCommand != value) {
+                                               _updateCommand = value;
+                                               ((IDbDataAdapter)this).UpdateCommand = value; 
+                                       }
+                       }
                }
 
                [DefaultValue (1)]
@@ -139,10 +172,6 @@ namespace System.Data.Common
                                        throw new NotSupportedException ();
                        }
                }
-#else
-               IDbCommand SelectCommand {
-                       get { return ((IDbDataAdapter) this).SelectCommand; }
-               }
 #endif
 
                #endregion // Properties
@@ -477,8 +506,9 @@ namespace System.Data.Common
                [EditorBrowsable (EditorBrowsableState.Advanced)]
                public override IDataParameter[] GetFillParameters ()
                {
-                       IDataParameter[] parameters = new IDataParameter [SelectCommand.Parameters.Count];
-                       SelectCommand.Parameters.CopyTo (parameters, 0);
+                       IDbCommand selectCmd = ((IDbDataAdapter) this).SelectCommand;
+                       IDataParameter[] parameters = new IDataParameter [selectCmd.Parameters.Count];
+                       selectCmd.Parameters.CopyTo (parameters, 0);
                        return parameters;
                }
                
@@ -654,28 +684,48 @@ namespace System.Data.Common
                                try {
                                        if (command != null) {
                                                DataColumnMappingCollection columnMappings = tableMapping.ColumnMappings;
+#if ONLY_1_1
                                                IDataParameter nullCheckParam = null;
+#endif
                                                foreach (IDataParameter parameter in command.Parameters) {
-                                                       if ((parameter.Direction & ParameterDirection.Input) != 0) {
-                                                               string dsColumnName = parameter.SourceColumn;
-                                                               if (columnMappings.Contains(parameter.SourceColumn))
-                                                                       dsColumnName = columnMappings [parameter.SourceColumn].DataSetColumn;
-                                                               if (dsColumnName == null || dsColumnName.Length <= 0) {
-                                                                       nullCheckParam = parameter;
-                                                                       continue;
-                                                               }
+                                                       if ((parameter.Direction & ParameterDirection.Input) == 0)
+                                                               continue;
 
-                                                               DataRowVersion rowVersion = parameter.SourceVersion;
-                                                               // Parameter version is ignored for non-update commands
-                                                               if (statementType == StatementType.Delete) 
-                                                                       rowVersion = DataRowVersion.Original;
+                                                       DataRowVersion rowVersion = parameter.SourceVersion;
+                                                       // Parameter version is ignored for non-update commands
+                                                       if (statementType == StatementType.Delete)
+                                                               rowVersion = DataRowVersion.Original;
 
+                                                       string dsColumnName = parameter.SourceColumn;
+#if NET_2_0
+                                                       if (columnMappings.Contains(dsColumnName)) {
+                                                               dsColumnName = columnMappings [dsColumnName].DataSetColumn;
                                                                parameter.Value = row [dsColumnName, rowVersion];
-                                                               if (nullCheckParam != null && (parameter.Value != null
-                                                                       && parameter.Value != DBNull.Value)) {
+                                                       } else {
+                                                               parameter.Value = null;
+                                                       }
+
+                                                       DbParameter nullCheckParam = parameter as DbParameter;
+#else
+                                                       if (columnMappings.Contains(dsColumnName))
+                                                               dsColumnName = columnMappings [dsColumnName].DataSetColumn;
+                                                       if (dsColumnName == null || dsColumnName.Length == 0) {
+                                                               nullCheckParam = parameter;
+                                                               continue;
+                                                       }
+                                                       parameter.Value = row [dsColumnName, rowVersion];
+#endif
+
+#if NET_2_0
+                                                       if (nullCheckParam != null && nullCheckParam.SourceColumnNullMapping) {
+#else
+                                                       if (nullCheckParam != null) {
+#endif
+                                                               if (parameter.Value != null && parameter.Value != DBNull.Value)
                                                                        nullCheckParam.Value = 0;
-                                                                       nullCheckParam = null;
-                                                               }
+                                                               else
+                                                                       nullCheckParam.Value = 1;
+                                                               nullCheckParam = null;
                                                        }
                                                }
                                        }