共用一份C#資料庫持久層架構設計思路及其部分代碼(原創)

來源:互聯網
上載者:User

開發背景:

     C#訪問資料庫無疑是非常方便的, 微軟提供的資料庫訪問類 SqlHelper可以讓我們輕鬆搞定資料庫的相關操作,這相比於C++,java等有著得天獨厚的優勢,但是在一個項目中,我們通常需要書寫大量的Sql語句,新增、修改、刪除這一些最基礎的sql雖然寫起來並

不複雜,但是就算是由過幾年工作經驗的人,依然感到繁瑣,對於新手來說,拼接sql語句也是經常容易出錯的,我們不禁想,有沒有一種可以不拼接Sql的底層呢?

 

AK2.0設計思路:

     作為一個優秀是程式員,就是要將自己的想法化作代碼來實現,想到就要去做,哪怕失敗了,我們也不會去後悔什麼,那下面說一下思路:

 舉個很簡單的例子:insert into tableA values(1,2,3) 我們能想到的最簡單的調用方式是什嗎?那就是這些insert 這些最基礎的代碼我們的開發人員不用去考慮,可以直接去傳遞表名和值,換句話說,我們只需要建立一個對象,然後傳遞表名和要插入的欄位即可,這

樣我們的程式就簡化多了,當然update、delete和select都是一樣

 

AK2.0簡介:

        AK2.0為本人及其團隊獨立開發的資料庫持久層架構,經過2個月的開發,半年多的測試,目前一定初步穩定,版本也由1.0升級到2.0,其主要實現底層SQL自動拼接,自動處理,不廢話了,直接貼出部分代碼,希望可以給大家帶來一些啟發:

    我們要寫一個查詢語句為:Select ID,Name from tableA where ID=XXX ,那麼下面為使用AK2.0的調用方式:

       public DateTable GetTableAFeild(int id)

          {

                 IDBOprate dbo = new SelectSQL("ConnLinkQPAcc");

                 dbo.TableName = "tableA";

                 dbo.AddFeild("ID", null);

                 dbo.AddFeild("Name", null);

                 dbo.AddWhere("ID", id, "=");

                 dbo.runSQL();

                 return dbo.dt;

        }

      參數介紹:串連到那個資料庫(ConnLinkQPAcc),要做什麼操作(SelectQL),操作那個表(tableA),操作那個欄位(ID,Name)查詢條件是什麼(id=xxx) ,跨庫肯定要支援的,所以直接在調用的時候傳遞參數了,可能您在第一次看的時候感覺也算有點麻煩,那麼你繼續看下去。

 

     我們要寫一個修改語句為: Update tableA  set pwd='dsds' ,name ='張三' where id=xxx,那麼下面為使用AK2.0的調用方式:

         public int UpdtaeTableAFeild(string pwd,string name,int id)

             {

                  IDBOprate dbo = new UpdateSQL("ConnLinkQPAcc");

                 dbo.TableName = "tableA";

                 dbo.AddFeild("pwd", pwd);

                 dbo.AddFeild("Name", name);

                 dbo.AddWhere("ID", id, "=");

                 Return dbo.runSQL();

             }

     參數介紹:串連到那個資料庫(ConnLinkQPAcc),要做什麼操作(UpdateSQL),操作那個表(tableA),操作那個欄位(ID,Name),值是什麼(pwd,name),查詢條件是什麼(id=xxx)  

 

    刪除和新增直接貼代碼,就不解釋了,看一樣大家是否能看懂:

      public int DeleteTableAFeild(string pwd,string name,int id)

          {

                IDBOprate dbo = new DeleteSQL("ConnLinkQPAcc");

                dbo.TableName = "tableA";

                dbo.AddWhere("ID", id, "=");

                Return dbo.runSQL();

           }

 

    public int InsertTableAFeild(string pwd,string name)

         {

                IDBOprate dbo = new InsertSQL("ConnLinkQPAcc");

                dbo.TableName = "tableA";

                dbo.AddFeild("pwd", pwd);

                dbo.AddFeild("Name", name);

                Return dbo.runSQL();

           }

 

       再都看完之後,有什麼感覺,哪怕對於一個新手來說,這樣的方式都很容易接受,那麼OK,這個就是我們要達到的目的

       再額外的補充一點:IDBOprate 是一個原廠模式,InsertSQL、UpdtaeSQL都是其生產的,具體請瞭解工廠設計模式。

    

        歡迎大家提出寶貴的意見,在此特別鳴謝對此版本做出貢獻的兩位開發人員:Klj,Mrq。

                                                         

     以上純屬個人觀點,轉載請註明出處                                                                                                                     --------------AK:2012-07-02

 

                     

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.