C# 如何仅更新已更改的字段?
我有一个数据集,在其中我在datatable中创建了一个新行,并填入1或2字段。他们可能不是每次都一样 当我执行dataset.update()时,所有字段似乎都被写回。我的数据库后端设置了默认值,但未触发 有没有办法让数据集只插入我手动更改的值,从而允许数据库“填写其他字段的默认值”C# 如何仅更新已更改的字段?,c#,dataset,C#,Dataset,我有一个数据集,在其中我在datatable中创建了一个新行,并填入1或2字段。他们可能不是每次都一样 当我执行dataset.update()时,所有字段似乎都被写回。我的数据库后端设置了默认值,但未触发 有没有办法让数据集只插入我手动更改的值,从而允许数据库“填写其他字段的默认值” 我还需要让数据集生成insert语句 尝试使用类型化数据集或adapter.FillSchema方法 更新1虽然这将发送额外的值,但在执行插入时它将有效地使用数据库默认值。您将无法让设计器生成insert语句(或
我还需要让数据集生成insert语句 尝试使用类型化数据集或adapter.FillSchema方法
更新1虽然这将发送额外的值,但在执行插入时它将有效地使用数据库默认值。您将无法让设计器生成insert语句(或让数据适配器在运行时生成它)并有选择地选择要设置的字段 虽然数据集具有更改监视功能,但它位于行级别,而不是列级别。因此,在进行更改时,必须跟踪设置了哪些列 如果要更改的列是一致的,那么我将在设计器中手工创建查询以仅插入这些值 否则,您将不得不自己监控哪些列的更改。如果数据库中的表没有允许空值的列,则可以允许数据集中的列具有空值,并将其设置为默认值。然后,如果列没有空值,您就知道它已被更改 如果它确实允许空值,那么您必须在数据集外部存储一个标志,指示是否为列设置了值(当列发生更改时,您可以这样做)
注意:当我说数据集没有变更监控时,我的意思是在DataSet/DataTable上调用GetChanges不会告诉您哪些列发生了变更,而只是哪些行发生了变更。DataAdapter将使用对GetChanges的调用来确定要发送到服务器的内容,但它不知道要发送哪些列,因此它会发送所有列。您可以通过colling手动设置默认值 Column.DefaultValue=默认值 要生成insert语句,可以使用CommandBuilder类
新的SqlCeCommandBuilder(dAdapter) 忘了加。我需要让数据集生成insert语句。