????? 使用.net编写一个界面程序,其中涉及到数据的存取,工作语言一直是C++,自信有msdn在手,玩个C#的ado不在话下,按照MVC架构大概设计了下程序的框架,抓取数据展示的功能很快也完成了,但是在使用Update将脏数据写回数据库的功能怎么也不成,update的返回值也是0,方法是参考msdn上示例来实现的,按说没有问题,但是现实是残酷的,接下来就开始了漫漫而纠结的寻找解决方法的两万五千里长征,过程省去一万字。。。。。。
????? 直接总结经验
????? 第一点,数据库的表设计一定要有主键,这样才能保证根据数据表生成的dataset文件中有完整的insert,delete, update, select的sql语句,如果表没有主键的话,那么只能保证select语句正常。这一点通过检查***.designer.cs文件方知。
????? 第二点,msdn提供的示例程序是错误的,在调用Update之前一定要调用EndEdit方法。个人认为微软在Update方法中需要EndEdit的触发,才将脏数据写到相应的datatable中,这样update才根据数据的变化决定执行update, insert or delete.
?