[Mono-list] DbDataAdapter.Fill patch
Aleksey Demakov
avd@openlinksw.com
Wed, 26 Feb 2003 05:28:25 +0600
This is a multi-part message in MIME format.
--------------000207040100090700010406
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Oops, sorry, first time I sent wrong files.
--------------000207040100090700010406
Content-Type: text/plain;
name="u.cs"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="u.cs"
using System;
using System.Data;
using System.Data.SqlClient;
public class Test
{
static SqlConnection conn = new SqlConnection("server=(local);Trusted_Connection=yes;database=northwind");
static SqlDataAdapter da1 = new SqlDataAdapter("select * from foo", conn);
static SqlDataAdapter da2 = new SqlDataAdapter("select * from bar", conn);
static SqlDataAdapter da3 = new SqlDataAdapter("select * from baz", conn);
static DataSet ds = new DataSet();
public static void Main ()
{
conn.Open ();
Create ();
SqlCommandBuilder b1 = new SqlCommandBuilder (da1);
da1.RowUpdating += new SqlRowUpdatingEventHandler (RowUpdatingHandler);
da1.MissingSchemaAction = MissingSchemaAction.AddWithKey;
da1.Fill (ds, "Foo");
ds.Tables["Foo"].Rows[0]["FooData"] = "foo2";
SqlCommandBuilder b2 = new SqlCommandBuilder (da2);
da2.RowUpdating += new SqlRowUpdatingEventHandler (RowUpdatingHandler);
da2.MissingSchemaAction = MissingSchemaAction.AddWithKey;
da2.Fill (ds, "Bar");
ds.Tables["Bar"].Rows[0]["BarData"] = "bar2";
try {
Console.WriteLine ("Calling da1.Update() without table parameter.");
da1.Update (ds);
Console.WriteLine ("Ok.");
} catch (Exception e) {
Console.WriteLine ("Caught an exception: ");
Console.WriteLine (e);
}
try
{
Console.WriteLine ("Calling da2.Update() without table parameter.");
da2.Update (ds);
Console.WriteLine ("Ok.");
}
catch (Exception e)
{
Console.WriteLine ("Caught an exception: ");
Console.WriteLine (e);
}
try
{
Console.WriteLine ("Calling da1.Update() with table name parameter.");
da1.Update (ds, "Foo");
Console.WriteLine ("Ok.");
} catch (Exception e) {
Console.WriteLine ("Caught an exception: ");
Console.WriteLine (e);
}
try
{
Console.WriteLine ("Calling da2.Update() with table name parameter.");
da2.Update (ds, "Bar");
Console.WriteLine ("Ok.");
} catch (Exception e) {
Console.WriteLine ("Caught an exception: ");
Console.WriteLine (e);
}
Console.WriteLine ("Once again. Fill a table with the default name.");
SqlCommandBuilder b3 = new SqlCommandBuilder (da3);
da3.RowUpdating += new SqlRowUpdatingEventHandler (RowUpdatingHandler);
da3.MissingSchemaAction = MissingSchemaAction.AddWithKey;
da3.Fill (ds);
ds.Tables["Table"].Rows[0]["BazData"] = "baz2";
try {
Console.WriteLine ("Calling da1.Update() without table parameter.");
da1.Update (ds);
Console.WriteLine ("Ok.");
} catch (Exception e) {
Console.WriteLine ("Caught an exception: ");
Console.WriteLine (e);
}
try
{
Console.WriteLine ("Calling da2.Update() without table parameter.");
da2.Update (ds);
Console.WriteLine ("Ok.");
} catch (Exception e) {
Console.WriteLine ("Caught an exception: ");
Console.WriteLine (e);
}
try
{
Console.WriteLine ("Calling da3.Update() without table parameter.");
da3.Update (ds);
Console.WriteLine ("Ok.");
} catch (Exception e) {
Console.WriteLine ("Caught an exception: ");
Console.WriteLine (e);
}
}
private static void Create ()
{
SqlCommand cmd = new SqlCommand ();
cmd.Connection = conn;
try
{
cmd.CommandText = "drop table foo";
cmd.ExecuteNonQuery ();
}
catch (Exception)
{
}
try
{
cmd.CommandText = "drop table bar";
cmd.ExecuteNonQuery ();
}
catch (Exception)
{
}
try
{
cmd.CommandText = "drop table baz";
cmd.ExecuteNonQuery ();
}
catch (Exception)
{
}
cmd.CommandText = "create table foo (FooId int primary key, FooData varchar (100))";
cmd.ExecuteNonQuery ();
cmd.CommandText = "insert into foo values (1, 'foo1')";
cmd.ExecuteNonQuery ();
cmd.CommandText = "create table bar (BarId int primary key, BarData varchar (100))";
cmd.ExecuteNonQuery ();
cmd.CommandText = "insert into bar values (1, 'bar1')";
cmd.ExecuteNonQuery ();
cmd.CommandText = "create table baz (BazId int primary key, BazData varchar (100))";
cmd.ExecuteNonQuery ();
cmd.CommandText = "insert into baz values (1, 'baz1')";
cmd.ExecuteNonQuery ();
cmd.Dispose ();
}
private static void RowUpdatingHandler (object sender, SqlRowUpdatingEventArgs e)
{
Console.WriteLine ("Updating with command: {0}", e.Command.CommandText);
}
}
--------------000207040100090700010406
Content-Type: text/plain;
name="out"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="out"
Calling da1.Update() without table parameter.
Caught an exception:
System.InvalidOperationException: Update unable to find TableMapping['Table'] or DataTable 'Table'.
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet)
at Test.Main()
Calling da2.Update() without table parameter.
Caught an exception:
System.InvalidOperationException: Update unable to find TableMapping['Table'] or DataTable 'Table'.
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet)
at Test.Main()
Calling da1.Update() with table name parameter.
Updating with command: UPDATE foo SET FooData = @p1 WHERE ( (FooId = @p2) AND ((FooData IS NULL AND @p3 IS NULL) OR (FooData = @p4)) )
Ok.
Calling da2.Update() with table name parameter.
Updating with command: UPDATE bar SET BarData = @p1 WHERE ( (BarId = @p2) AND ((BarData IS NULL AND @p3 IS NULL) OR (BarData = @p4)) )
Ok.
Once again. Fill a table with the default name.
Calling da1.Update() without table parameter.
Caught an exception:
System.NullReferenceException: Object reference not set to an instance of an object.
at Test.RowUpdatingHandler(Object sender, SqlRowUpdatingEventArgs e)
at System.Data.SqlClient.SqlRowUpdatingEventHandler.Invoke(Object sender, SqlRowUpdatingEventArgs e)
at System.Data.SqlClient.SqlDataAdapter.OnRowUpdating(RowUpdatingEventArgs value)
at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet)
at Test.Main()
Calling da2.Update() without table parameter.
Caught an exception:
System.NullReferenceException: Object reference not set to an instance of an object.
at Test.RowUpdatingHandler(Object sender, SqlRowUpdatingEventArgs e)
at System.Data.SqlClient.SqlRowUpdatingEventHandler.Invoke(Object sender, SqlRowUpdatingEventArgs e)
at System.Data.SqlClient.SqlDataAdapter.OnRowUpdating(RowUpdatingEventArgs value)
at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet)
at Test.Main()
Calling da3.Update() without table parameter.
Updating with command: UPDATE baz SET BazData = @p1 WHERE ( (BazId = @p2) AND ((BazData IS NULL AND @p3 IS NULL) OR (BazData = @p4)) )
Ok.
--------------000207040100090700010406--