只能不用dataadapter和dataset对象的情况下,用command_insert.ExecuteNonQuery()才能更新到数据库,请问如果用dataset和dataadapter如何更新到数据库?
5 个解决方案
#1
this.oleDbDataAdapter1.SelectCommand.CommandText =
"SELECT * FROM list";
try
{
this.OpenDatabase();
System.Data.OleDb.OleDbCommandBuilder cmd =
new System.Data.OleDb.OleDbCommandBuilder(this.oleDbDataAdapter1);
this.oleDbDataAdapter1.Update(ds.Tables[0].Select());
this.CloseDatabase();
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
this.CloseDatabase();
throw(e);
}
"SELECT * FROM list";
try
{
this.OpenDatabase();
System.Data.OleDb.OleDbCommandBuilder cmd =
new System.Data.OleDb.OleDbCommandBuilder(this.oleDbDataAdapter1);
this.oleDbDataAdapter1.Update(ds.Tables[0].Select());
this.CloseDatabase();
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
this.CloseDatabase();
throw(e);
}
#2
这个方法和我上面说的方法有什么不同吗?是一样的吧,但是为什么不行呢???继续请教
#3
littlehb(网际浪子)的方法跟你说的是不一样的,
你可以在MSDN查询:OleDbCommandBuilder,这里介绍的比较详细。
你可以在MSDN查询:OleDbCommandBuilder,这里介绍的比较详细。
#4
使用强类型DATASET的代码
写在UPDATE内
myGridBind();
string key=DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
string a,b;
TextBox sn,cn;
sn=(TextBox)e.Item.Cells[1].Controls[0];
cn=(TextBox)e.Item.Cells[2].Controls[0];
studentname=sn.Text;
classno=cn.Text;
DataSet1.StudentRow r; //强类型DATASET
r=dataSet11.Student.FindByS_No(key);
r.S_Name=a;
r.C_No=b;
sqlDataAdapter1.Update(dataSet11);
myGridBind();
DataGrid1.EditItemIndex=-1;
myGridBind();
写在UPDATE内
myGridBind();
string key=DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
string a,b;
TextBox sn,cn;
sn=(TextBox)e.Item.Cells[1].Controls[0];
cn=(TextBox)e.Item.Cells[2].Controls[0];
studentname=sn.Text;
classno=cn.Text;
DataSet1.StudentRow r; //强类型DATASET
r=dataSet11.Student.FindByS_No(key);
r.S_Name=a;
r.C_No=b;
sqlDataAdapter1.Update(dataSet11);
myGridBind();
DataGrid1.EditItemIndex=-1;
myGridBind();
#5
我知道了,我自己搞明白了,嘻嘻是一个非常常识性的问题:我只是定义了一个insert command对象,我以为这样就不用在dataset的table中加入新的row了,结果当然不行,现在我加入了新的row,然后再update,结果就行了,谢谢各位!!!
#1
this.oleDbDataAdapter1.SelectCommand.CommandText =
"SELECT * FROM list";
try
{
this.OpenDatabase();
System.Data.OleDb.OleDbCommandBuilder cmd =
new System.Data.OleDb.OleDbCommandBuilder(this.oleDbDataAdapter1);
this.oleDbDataAdapter1.Update(ds.Tables[0].Select());
this.CloseDatabase();
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
this.CloseDatabase();
throw(e);
}
"SELECT * FROM list";
try
{
this.OpenDatabase();
System.Data.OleDb.OleDbCommandBuilder cmd =
new System.Data.OleDb.OleDbCommandBuilder(this.oleDbDataAdapter1);
this.oleDbDataAdapter1.Update(ds.Tables[0].Select());
this.CloseDatabase();
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
this.CloseDatabase();
throw(e);
}
#2
这个方法和我上面说的方法有什么不同吗?是一样的吧,但是为什么不行呢???继续请教
#3
littlehb(网际浪子)的方法跟你说的是不一样的,
你可以在MSDN查询:OleDbCommandBuilder,这里介绍的比较详细。
你可以在MSDN查询:OleDbCommandBuilder,这里介绍的比较详细。
#4
使用强类型DATASET的代码
写在UPDATE内
myGridBind();
string key=DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
string a,b;
TextBox sn,cn;
sn=(TextBox)e.Item.Cells[1].Controls[0];
cn=(TextBox)e.Item.Cells[2].Controls[0];
studentname=sn.Text;
classno=cn.Text;
DataSet1.StudentRow r; //强类型DATASET
r=dataSet11.Student.FindByS_No(key);
r.S_Name=a;
r.C_No=b;
sqlDataAdapter1.Update(dataSet11);
myGridBind();
DataGrid1.EditItemIndex=-1;
myGridBind();
写在UPDATE内
myGridBind();
string key=DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
string a,b;
TextBox sn,cn;
sn=(TextBox)e.Item.Cells[1].Controls[0];
cn=(TextBox)e.Item.Cells[2].Controls[0];
studentname=sn.Text;
classno=cn.Text;
DataSet1.StudentRow r; //强类型DATASET
r=dataSet11.Student.FindByS_No(key);
r.S_Name=a;
r.C_No=b;
sqlDataAdapter1.Update(dataSet11);
myGridBind();
DataGrid1.EditItemIndex=-1;
myGridBind();
#5
我知道了,我自己搞明白了,嘻嘻是一个非常常识性的问题:我只是定义了一个insert command对象,我以为这样就不用在dataset的table中加入新的row了,结果当然不行,现在我加入了新的row,然后再update,结果就行了,谢谢各位!!!