这样应该如何更新? 自己根据需要写Update语句,赋值给DataAdapter的UpdateCommand属性就可以了. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 回复人: haiwangstar(八月桂花香) ( ) 信誉:100 2004-01-20 00:12:00 得分:0 自己根据需要写Update语句,赋值给DataAdapter的UpdateCommand属性就可以了.是这样的,vb下我做过一个,不过比较麻烦,要手工判断primary key等。 更新前根据动态DataSet里相应DataTable各行各字段的OldValue/NewValue来生成Update语句,创建一个OleDbCommand来执行它。或者创建一个DataAdapter,动态设置它的UpdateCommand、InsertCommand、DeleteCommand的Sql语句。 to wanggier:"动态设置它的UpdateCommand、InsertCommand、DeleteCommand的Sql语句。"动态设置语句的话必须动态配置各语句的参数值,这需要能够获得该数据表各字段的名称,不知有何简便方法。to All:我发现好像有OleDbCommandBuilder类根据给定的SelectCommand自动生成Update、Insert、Delete相关SQL命令,但是我这么做的话总是出错提示SelectCommand没有返回键列,可是我动态生成该表时明明设置了键列,我用一个静态表用同样方法一试却没有问题,估计因为动态表的数据集设置成了非类型化的缘故,而这其中没有键列(不知我估计的对不对),相关代码如下,希望大家给予意见:类声明部分代码:private System.Data.OleDb.OleDbCommandBuilder myBuilder;private System.Data.OleDb.OleDbDataAdapter myAdapter;private System.Data.DataSet dsWage;实例化部分代码(clsCommon.m_TableName为纪录动态表名的全局变量):dsWage = new System.Data.DataSet("dsWage");myAdapter = new System.Data.OleDb.OleDbDataAdapter("select * from " + clsCommon.m_TableName, this.oleDbConnection1);myBuilder = new System.Data.OleDb.OleDbCommandBuilder(myAdapter);执行部分代码:this.myAdapter.Fill(this.dsWage);this.dataGrid1.DataSource = this.dsWage.Tables[0];……this.myAdapter.UpdateCommand = this.myBuilder.GetUpdateCommand();this.myAdapter.DeleteCommand = this.myBuilder.GetDeleteCommand();this.myAdapter.InsertCommand = this.myBuilder.GetInsertCommand();this.myAdapter.Update(this.dsWage);this.dsWage.AcceptChanges();…… C#窗体隐藏问题 Linq排序 winform里如何让文字竖着显示 关于24点计算,我找到一个代码,大家分析一下他的思路? 求一简单的正则表达式 “DirectoryInfo”方法没有采用“0”个参数的重载 大侠看看修改系统时间的代码错在哪里! 如何取得本机的IP??? 告别.NET,挥泪散分!! 请问:关于DataAdapter的Update()方法的一点问题 初学,遇到这个问题,我也不知道怎么描述,各位麻烦看看了 再谈谈关于c#的读法......
自己根据需要写Update语句,赋值给DataAdapter的UpdateCommand属性就可以了.
是这样的,vb下我做过一个,不过比较麻烦,要手工判断primary key等。
或者创建一个DataAdapter,动态设置它的UpdateCommand、InsertCommand、DeleteCommand的Sql语句。
"动态设置它的UpdateCommand、InsertCommand、DeleteCommand的Sql语句。"动态设置语句的话必须动态配置各语句的参数值,这需要能够获得该数据表各字段的名称,不知有何简便方法。to All:
我发现好像有OleDbCommandBuilder类根据给定的SelectCommand自动生成Update、Insert、Delete相关SQL命令,但是我这么做的话总是出错提示SelectCommand没有返回键列,可是我动态生成该表时明明设置了键列,我用一个静态表用同样方法一试却没有问题,估计因为动态表的数据集设置成了非类型化的缘故,而这其中没有键列(不知我估计的对不对),相关代码如下,希望大家给予意见:
类声明部分代码:
private System.Data.OleDb.OleDbCommandBuilder myBuilder;
private System.Data.OleDb.OleDbDataAdapter myAdapter;
private System.Data.DataSet dsWage;
实例化部分代码(clsCommon.m_TableName为纪录动态表名的全局变量):
dsWage = new System.Data.DataSet("dsWage");
myAdapter = new System.Data.OleDb.OleDbDataAdapter("select * from " + clsCommon.m_TableName, this.oleDbConnection1);
myBuilder = new System.Data.OleDb.OleDbCommandBuilder(myAdapter);
执行部分代码:
this.myAdapter.Fill(this.dsWage);
this.dataGrid1.DataSource = this.dsWage.Tables[0];
……
this.myAdapter.UpdateCommand = this.myBuilder.GetUpdateCommand();
this.myAdapter.DeleteCommand = this.myBuilder.GetDeleteCommand();
this.myAdapter.InsertCommand = this.myBuilder.GetInsertCommand();
this.myAdapter.Update(this.dsWage);
this.dsWage.AcceptChanges();
……