none
字串巨集 ? RRS feed

  • 問題

  • 又來請教各位大師

    以前VFP有個技術,我記得前輩好像說叫『字串巨集』

    &變數 = 程式Run到就會執行那行程式,有點像Linq 先讀起來,要用的時候才去執行。

    想請教C#是否有此『字串巨集』的技術

    ************************************************************

    想了一段模擬 Code

    目的:不需要人工複製、貼上做好幾次@@

    優點:長期下來應該會省蠻多時間、減少人工複製、貼上 sql.Parameters後面欄位打錯的風險。

    缺點:有問題的話deBug會增加困擾 @@,但是有寫好應該不太會出現問題。

    string _data = DbCommandName + ", string _a, string _b, int _c";

    dt = QueryFillTable(&_data)

    public DataTable QueryFillTable(~~~~)

    {

        string _dbCommandName = 參數1;

        string _finalString = String.empty();    

        int _parametersCnt = 傳進來的參數數量;         

         for (int i = 2; _parametersCnt; i++)    

         {

               _pName = 參數{i}名稱;

               _t = 參數{i}型別;

              _finalString = _finalString + "sql.Parameters.Add(\":" +

                                     _PName + , DbType." + _t + ").Value = " + _PName + ";  /n/r" ;
         }

         _finalString = "DbCommand sql = _dbCommandName + ".QueryFillTable; " +

                                  _finalString + "return sql.FillTable();"

         return &_finalString; // 執行上面組的字串程式結果 }

    結果:    

    public DataTable QueryFillTable(DBcommadXXXX, string AAA, string BBB, int CCC)    

    {        

          DbCommand sql = DBcommadXXXX.QueryFillTable;        

          sql.Parameters.Add(":AAA", DbType.String).Value = AAA;        

          sql.Parameters.Add(":BBB", DbType.String).Value = BBB;        

          sql.Parameters.Add(":CCC", DbType.int).Value = CCC;        

          return sql.FillTable();    

    }

    這邊的做法人工在做這塊,我覺得實在是...=.=

    所以我想到可以把這個做成一個方法,再利用字串巨集去執行





    • 已編輯 天氣 2014年6月11日 上午 03:18 補字
    2014年6月11日 上午 01:26

解答

  • 您好,

    您可以參考「Script.NET(S#)」,不知是不是您想要的!


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

    自己做動態編譯就可以了吧...

    這篇是國內的...

    VBNetCode VB.NET 類別 程式碼動態編譯執行引擎(模擬 Script Control)

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 天氣 2014年6月13日 上午 01:43
    2014年6月11日 下午 01:27

所有回覆

  • 您可以參考這篇文件的做法:設定參數和參數資料型別

    2014年6月11日 上午 01:57
  • 您好,

    您可以參考「Script.NET(S#)」,不知是不是您想要的!


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

    2014年6月11日 上午 02:23
  • 你可以把那些共用的部份都包起來,之後呼叫函數即可。

    若一定要做 Code Generator,就要運用像 T4, CodeDOM 或 Emit 的作法。

    簡單的說,跳到別的開發工具,就用那個開發工具的思維,而不是硬要把原本的開發行為硬套過來...


    強力監督SQL Injection問題!!

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

    2014年6月11日 上午 03:20
    版主
  • 你可以把那些共用的部份都包起來,之後呼叫函數即可。

    若一定要做 Code Generator,就要運用像 T4, CodeDOM 或 Emit 的作法。

    簡單的說,跳到別的開發工具,就用那個開發工具的思維,而不是硬要把原本的開發行為硬套過來...


    強力監督SQL Injection問題!!

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

    對 la~  我就是想問C#要如何達成  ha~ ha~

    我不是要硬套,我只是舉例子說明 la~ >.<"

    之前用了4年半的PB,它也沒有字串巨集的技術~ 它也是一個一個再去人工設定參數.....

    我想這些其實都是自動產生的的

    *************************

    對了

    朱朱大大~

    1.我想去讀一些以前學會的技術,想知道到底專有名詞是什麼 ==?

    2.另外就像你說得有些以前碰過的開發工具的作法,在C#這邊是如何做 ?

    上面兩個其實差不多意思,你有沒有什麼推薦的書,可以拜讀一下 ?

    現在主要都是 aspx  C#,Web開發經驗沒這麼多,以前大多寫Windows介面

    還有超好用的 Stored Procedure


    • 已編輯 天氣 2014年6月11日 上午 04:02 補字
    2014年6月11日 上午 03:51
  • 你可以去 Survey 一下 ORM 的技術。

    例如 Entity Framework 或 NHibernate,它們都是成熟的 Framework,可以解決你上面要一行一行輸入參數的問題,又同時能應用強型別來降低輸入錯誤的問題。

    Web 上也可以用 stored procedure...


    強力監督SQL Injection問題!!

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

    2014年6月11日 上午 04:05
    版主
  • 你可以去 Survey 一下 ORM 的技術。

    例如 Entity Framework 或 NHibernate,它們都是成熟的 Framework,可以解決你上面要一行一行輸入參數的問題,又同時能應用強型別來降低輸入錯誤的問題。

    Web 上也可以用 stored procedure...


    強力監督SQL Injection問題!!

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

    什麼程式都可以用SP 就只是呼叫它去執行而已

    民國百年蟲前為了要轉檔到新資料庫,那時候學會寫 Oracle SP、triggers真的超好用 !

    缺點是Degbug不好抓,看不到整批實體資料 >~<"

    自己腦袋要有點記憶體空間存放 XD

    好懷念很久以前的VFP 的

    1. Into Cursor 資料馬上倒出來

    2. BROWSE Command 一行指令,隨時可以立馬看倒資料的樣貌

    3. _CLIPTEXT:動態組的SQL,最後結果接到剪貼簿~

    SP我覺得是最好統一共用邏輯的地方,而且有些東西DB做速度最快,不用再透過外面一層來來回回

    謝謝~ 朱大大指導

    :)

    • 已編輯 天氣 2014年6月11日 上午 05:54 補字
    2014年6月11日 上午 05:46
  • 我同意在DB處理速度很快 , 但如果您把東西統統丟到 SP , 那最後的結果就是負載全在 DB SERVER 

    再者開發上要Debug , 在SP上相較不易

    另外如果遇到比較複雜的東西如果統統在DB處理 , 鎖定時間過長 , 整體效能不會比較快 , 也要考慮長時間鎖定及交易的問題 

    我跟小朱的看法一樣 , 您也許先了解一下 ORM 會比較有助您思考系統架構該如何處理


    微軟免費線上課程

    HTML5 & JavaScript程式開發實戰(MyBook)

    開發ASP.NET您要瞭解的基楚

    http://www.dotblogs.com.tw/ian (MyBlog)

    2014年6月11日 上午 06:00
  • 您好,

    您可以參考「Script.NET(S#)」,不知是不是您想要的!


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

    自己做動態編譯就可以了吧...

    這篇是國內的...

    VBNetCode VB.NET 類別 程式碼動態編譯執行引擎(模擬 Script Control)

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 天氣 2014年6月13日 上午 01:43
    2014年6月11日 下午 01:27