我在DataSet里更新了 表 "Users",如果要把更新后的内容推回数据库,是不是还要先设置 SqlCommmand 的UpdateCommand 属性,再用SqlCommand.Updata("Users")?如果这样,是不是太不方便了?还不如用DataReader.ExecuteNonQuery 执行SqlCommand.InsertCommand.在DataSet里更新"Users"的时候我用如下方法:internal static int Insert(string name ,string pwd ,DataTable datatable){DataRow newrow = datatable.NewRow(); datatable.Rows[1].BeginEdit();
newrow["UserName"] = name;
newrow["Password"] = pwd;
newrow["UserID"] = 111;
datatable.Rows[1].EndEdit();
Console.WriteLine ("Before Insert\n");
DisTable(datatable);
datatable.Rows.Add(newrow); sqlConn.Open ();
int num = sqlDa.Update(datatable);
sqlConn.Close ();
return num;}
newrow["UserName"] = name;
newrow["Password"] = pwd;
newrow["UserID"] = 111;
datatable.Rows[1].EndEdit();
Console.WriteLine ("Before Insert\n");
DisTable(datatable);
datatable.Rows.Add(newrow); sqlConn.Open ();
int num = sqlDa.Update(datatable);
sqlConn.Close ();
return num;}
解决方案 »
- 【求帮忙】小弟想做一个动作,于是从GridView拿出两行数据作为条件遍历一个Table,如果这个遍历结果里存在不符合条件的,动作不予发生怎么做?在线等,附代码
- ChangePassword控件怎样使用啊?“在应用程序配置中未找到连接名“LocalSqlServer”或者连接字符串为空。 “”
- c# datagridview修改后提交更新数据库的问题
- 〉〉〉怎样用C#取得 硬盘上存放的一首mp3文件的播放时间长度?
- 哪个有技术的想干自己的事业!
- 怎样在标准菜单控件中添加其他控件,如文本框之类的控件?高手请进
- 怎么把double型的转为string型??
- 谁有自己认为经典的开发规范?高分相送.
- Form之间的数据传递问题
- 大家看看这段程序有什么蹊跷吗?
- IE Web Controls中treeview不能按树结构显示的问题
- C# 接口中定义的属性,在实际中如何使用?
或者自已设置UpdateCommand
要不用CommandBuilder自动生成更新逻辑
DataAdapter可以一次更新n条数据
这也是ADO.NET的主要优点之一
"自己设置 UpdateCommand 会提示 :没有设置 InsertCommand"
"设置了更新逻辑以后,可以直接用int num = sqlDa.Update(datatable); 吗?不用再设置UpdataCommand?To:Sunmast 一次更新n条记录,不也得设置 UpdateCommand?那还是要"SET UserName= '"+name+"',Password= '"+pwd+"'",那前面我在 DataSet里增加的 newrow 有什么用?
是的
我是说,当你的DataSet有很多的改动后,只需要一次Update,就更新到数据库了
To CSDANTM:
不对吧!我用 dataAdapter1.Fill(dataSet1,"Users"),在我用前面的方法Update已经加到dataset的表 "Users" 的时候,他会报错说" 未处理的异常 System.InvalidOperationException :当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand " ,这个意思不是说,如果要 Update,必须要有 InsertCommand?
我是 设置InsertCommand并且 赋给 dataAdapter2,然后用 dataAdapter2.Update("Users"),这样做才可以正常.
另外:在这个 社区 "给分"必须要结帐,也就是一次全都给完?
"SET UserName= '"+name+"',Password= '"+pwd+"'" 是为了设置 UpdateCommand,如果不写,他会提示我上面说的错误.
internal static DataTable ClearTable(DataTable datatable)
{
datatable.Clear ();
ShowTable(datatable);// 显示表 datatable 的所有行列内容.
SqlDataAdapter sqlda = new SqlDataAdapter();
sqlConn.Open ();// sqlConn 是全局变量.
int n = sqlda.Update(datatable);
sqlConn.Close ();
Console.WriteLine ("Update the table successfully return :\t"+n);
return datatable;
}
结果:Update the table successfully return : 0
哪里的问题?要设置sqlCmd.CommandTest ,再sqlda.UpdataCommand = sqlCmd ?
是由数据操作频率,数据量,决定的,
一般一次性解决战斗的,比较推荐DataReader;
如果整表或多个表的操作.还是用DataSet.其实DataReader也接受多个查询返回集的.SqlCommand.CommandTest="语句一;语句N";
执行返回到DataReader里 用NextResult来取
总之无论如何,用DataAdapter来推动数据或者SqlCommand解决,都要根据情况决定,
谢谢!
DadaSet 在推回数据库的是不是 必须设置SqlCommand.CommandText 属性?