仅在数据库已更改时才将值存储到数据库

时间:2010-12-30 16:09:29

标签: c# mysql winforms

我正在使用Visual C#Express和MySQL创建数据库应用程序。问题是我只想将数据从C#表单存储到数据库中,如果数据实际已经被更改,我现在的方式就是当单击“保存”按钮时,表单中的所有字段都是保存到数据库中,无论它们是否已被更改。

我提出的解决方案只是检查表单中的每个字段是否已更改,然后相应地更改SQL命令,即

//when the details are loaded into the form
String strOriginalName = txtFirstname.Text;

//when the save button is checked
if(strOriginalName != txtFirstname.Text)
{
String strUpdate = "UPDATE table SET firstName = txtFirstname.Text";
MySqlCommand cmdUpdate = new MySqlCommand(strUpdate, connection);
cmdUpdate.ExecuteNonQuery();
} 

还有其他人有更好或替代的解决方案吗?感谢您的帮助,如果我的任何部分含糊不清,请告诉我,我可以尝试进一步解释。

4 个答案:

答案 0 :(得分:2)

我建议使用一些OR Mapper(NHibernate)作为例子。它会为你做到这一切。此外,这将免费为您提供缓存和其他很酷的东西:)

未来的经验教训是无价的,您的下一个应用程序将变得越来越快。 :)

答案 1 :(得分:0)

只有一个更新查询 - 除非您有数百个参数,否则您不应该看到很多性能问题。

在要更新的类中,有一个布尔dirty标志,只要值发生变化,该标志就会设置为true

仅当标志确实为true时才更新到数据库。


或者,使用实现Unit Of Work的ORM,它应该自动为您处理。

答案 2 :(得分:0)

如果表单中有单个字段,那么这是正确的......

但是当你的表单中有多个值(字段)时,你应该使用1个标志变量。

更改任何文本后,您应将该标志设置为true并更新它。

答案 3 :(得分:0)

了解ORM实现此功能的方式,

搜索NotifyPropertyChangedObject Change Tracking

相关问题