none
物件屬性如何組合不定個數欄位的UPDATE句?! RRS feed

  • 問題

  • 各位前輩大家好,

    最近小弟遇到一個問題。

    有個類別 學生 共有10屬性 還有一隻修改的方法

    public class Student

    { public string Name {get;set;}

       public string ID {get;set;}

       public string Password {get;set;}

    //其他個人資料...

      public bool Update()

     { 

         ///...

     }

    }

    前台只要修改2個欄位,後台可修改9個欄位。

    我的寫法都是

    Student obj = new Student();

    obj.ID = txtID.Text;

    obj.Password = txtPassword.Text;

    ...

    obj.Update();

    ------------------------------------------------------------------------------------------------------

    我目前資料庫的欄位開得跟屬性名稱一樣

    我想要取得屬性的名稱,然有組合SQL句。

    一隻Update()的方法 

    前台組合出來應該是

    update student set password=@id,name = @name where id = @id

    後台就是全部了

    update student set password=@id,name = @name........................... where id = @id

    --------------------------------------------------------------------------------------------------------------------

    最大的困難點就是...

    從屬性組合SQL句

    像是 某一支方法 MethodA

    input: this.Name

    取得屬性名稱

    output: " Name = @Name, "

    還要判斷 之前指派值給多少屬性 像前台就是2個 後台是9個

    接著

    string updateColumns = MethodA();

    string sql = string.Format(@"update student set {0} where id = @id",updateColumns );

    ---------------------------------------------------------------------------------------------------------

    小弟思考了很多

    也google了很多關鍵字 像是 "update 欄位不一定"、"動態update"、"自動組合update sql句"...

    可是都沒有查到相關的文章。

    2014年3月12日 下午 02:59

所有回覆

  • 你可以用 Reflection 來取得屬性的名稱,其他的就只是單純組字串。

    至於前台和後台的差異,可以搭配 attribute 或是中間以一個規則來設定。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已提議為解答 No.18MVP 2014年3月13日 上午 03:03
    2014年3月12日 下午 03:05
    版主
  • 您好,
    您也可以參考使用「以 DataAdapter 更新資料來源」試看看!

    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2014年3月13日 上午 02:11
  • 看來他的資料來源是強型別, 而非 DataTabe 或 DataSet , 這樣可以用 DataAdapter.Update() 喔 ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2014年3月13日 上午 02:58