我正在使用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();
}
还有其他人有更好或替代的解决方案吗?感谢您的帮助,如果我的任何部分含糊不清,请告诉我,我可以尝试进一步解释。
答案 0 :(得分:2)
我建议使用一些OR Mapper(NHibernate)作为例子。它会为你做到这一切。此外,这将免费为您提供缓存和其他很酷的东西:)
未来的经验教训是无价的,您的下一个应用程序将变得越来越快。 :)
答案 1 :(得分:0)
只有一个更新查询 - 除非您有数百个参数,否则您不应该看到很多性能问题。
在要更新的类中,有一个布尔dirty
标志,只要值发生变化,该标志就会设置为true
。
仅当标志确实为true
时才更新到数据库。
或者,使用实现Unit Of Work的ORM,它应该自动为您处理。
答案 2 :(得分:0)
如果表单中有单个字段,那么这是正确的......
但是当你的表单中有多个值(字段)时,你应该使用1个标志变量。
更改任何文本后,您应将该标志设置为true并更新它。
答案 3 :(得分:0)
了解ORM实现此功能的方式,
搜索NotifyPropertyChanged
和Object Change Tracking
。