Hallo Liste,
Habe ein paar Schwierigkeiten mit dem SqlCommandBuilder. Mein DataGrid habe ich bisher folgendermassen geupdatet:
public void dg_Update(object sender, DataGridCommandEventArgs e)
{
int ID = (int) dg.DataKeys[e.Item.ItemIndex];
TextBox tb_Obj_ID = (TextBox) e.Item.Cells[1].Controls[0];
TextBox tb_PICTYP = (TextBox) e.Item.Cells[2].Controls[0];
SqlConnection conn = new SqlConnection("server=SEE-MOB; uid=TestUser; pwd=myTestUser; database=SEE;");
conn.Open();
string SQL = "SELECT * FROM T_objpix";
SqlDataAdapter adapter = new SqlDataAdapter(new SqlCommand(SQL, conn));
DataSet dataset = new DataSet();
adapter.Fill(dataset, "T_objpix");
DataRow[] rows = dataset.Tables["T_objpix"].Select("ID=" + ID);
if(rows.Length == 1)
{
DataRow row = rows[0];
row["Obj_ID"] = tb_Obj_ID.Text;
row["PICTYP"] = tb_PICTYP.Text;
}
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.Parameters.Add("@Obj_ID", tb_Obj_ID.Text);
cmd.Parameters.Add("@PICTYP", tb_PICTYP.Text);
cmd.Parameters.Add("@ID", ID);
cmd.CommandText = "UPDATE T_objpix SET [EMAIL PROTECTED], [EMAIL PROTECTED] WHERE [EMAIL PROTECTED];";
cmd.ExecuteNonQuery();
adapter.UpdateCommand = cmd;
adapter.Update(dataset, "T_objpix");
conn.Close();
dg.EditItemIndex = -1;
ExecuteDataBinding();
}
Das funktioniert soweit - nur etwas aufwendig. Jetzt wollte ich der Einfachheit- und �bersichthalber den fetten Teil mittels der Methode SqlCommandBuilder ersetzen. Der Quelltext sind dann folgendermassen aus:
public void dg_Update(object sender, DataGridCommandEventArgs e)
{
int ID = (int) dg.DataKeys[e.Item.ItemIndex];
TextBox tb_Obj_ID = (TextBox) e.Item.Cells[1].Controls[0];
TextBox tb_PICTYP = (TextBox) e.Item.Cells[2].Controls[0];
SqlConnection conn = new SqlConnection("server=SEE-MOB; uid=TestUser; pwd=myTestUser; database=SEE;");
conn.Open();
string SQL = "SELECT * FROM T_objpix";
SqlDataAdapter adapter = new SqlDataAdapter(new SqlCommand(SQL, conn));
SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter);
DataSet dataset = new DataSet();
adapter.Fill(dataset, "T_objpix");
DataRow[] rows = dataset.Tables["T_objpix"].Select("ID=" + ID);
if(rows.Length == 1)
{
DataRow row = rows[0];
row["Obj_ID"] = tb_Obj_ID.Text;
row["PICTYP"] = tb_PICTYP.Text;
}
adapter.Update(dataset, "T_objpix");
conn.Close();
dg.EditItemIndex = -1;
ExecuteDataBinding();
}
Das Ganze liefert mir dann aber dann folgende Exception:
System.InvalidOperationException: Dynamische SQL-Generierung wird f�r UpdateCommand gegen einen SelectCommand, der keine Spalteninformationen zur�ckgibt, nicht unterst�tzt.
F�r die folgende Zeile: adapter.Update(dataset, "T_objpix");
Villeicht k�nnt ihr mir ja weiterhelfen. Danke und Gruss
Tim
