共享一份C#數據庫持久層框架設計思路及其部分代碼(原創)


開發背景:

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

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

 

AK2.0設計思路

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

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

樣我們的程序就簡化多了,當然updatedeleteselect都是一樣

 

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

 

                     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM