如果用SQLDATAADAPTER更新DATASET的資料時,如果不用SQLCOMMANDBUILDER,要自己寫INSERT,UPDATE等COMMAND,但是有一個問題我不明白,.NET為什麽不做類似PB(DATAWINDOW),VFP9.0(CURSORADAPTER)中更新的方式,就是可以通過選擇SELECT 哪些列,其中哪些列是要更新的,並發性(如KEY,KEY+可更新列,KEY+修改列,所有列),即更新和INSERT的SQL語句是自動生成的,這樣有好處啊,一是效率高,二是如果更新表有多個FIELD,只會生成修改了的FIELD的SQL語句,而不是像現在.NET這樣,更新所有列,並發性SQL要自己寫,效率好差啊,好像VS.NET2005有了一些改進把SQLDATAADAPTER封裝到TABLEADAPTER裏了,可是也不知如何控制並發性啊,總不能去改TABLEADAPTER的代碼吧?
而且我發現用SQLCOMMANDBUILDER時,它生成的SQL語句只會生成修改了的FIELD的SQL語句,好像有點兒接近我想要的,但它只能更新單表,且是開放並發性!請問大俠們用DATASET配合ADAPTER更新資料時,如何處理??

解决方案 »

  1.   

    dataset 是离线数据集,目前也只有自己写insert,update & delete 语句 或用 
    SqlCommandBuilder...
      

  2.   

    用配置SQLDATAADAPTER可以自动生成sql语句
      

  3.   

    有誰有無VS.NET2005的TABLEADAPTER,如何自動生成,並且可以修改並發性等?
      

  4.   

    在设计器界面拉一个SQLDATAADAPTER到设计器托盘,会出现适配器向导,可以自己定制sql查询。
      

  5.   

    如果没必要的话不要自己写那些SQL 语句,直接用SqlDataAdapter向导生成就行了
    不过如果你要考虑到SqlDataAdapter.Update和SqlCommand同时用并有回滚操作时就自己写insert,update,delete 等命令的CommandString了,不过那也简单,可以先用向导生成再复制
      

  6.   

    用vs.net的可视化设计器就能自动生成配套的sql语句了,但灵活性明显很差,实在不爽可能还要仰赖数据持久化框架
      

  7.   

    dataset是离线的,因此只能手动写,或用sqlcommandbuilder,用向导灵活性太差,不推荐
      

  8.   

    .net中你完全可以用一些ApplicationBlock实现最方便的数据库操作,因此不是不能,而是不需要PB(DATAWINDOW),VFP9.0(CURSORADAPTER)那些东西.就比如我,自己写一个(你不愿意的话也可以跟别人要一个或下载一个)以后,很久很久我都没在自己的代码中写那些数据库的sqlcommandbuilder,SQLDATAADAPTER之类,甚至using System.Data.SqlClient;这句都很久没打过了.....我不认为一个写一次就可以用一辈子并继续完善的类,会比那些东西麻烦.