首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

数据库访问底层(DAL)的设计~贴者有分,嘿嘿,该如何处理

2012-02-19 
数据库访问底层(DAL)的设计~~贴者有分,嘿嘿偶自己先帖一个:大虾表笑话俺^_^usingSystemusingSystem.Data

数据库访问底层(DAL)的设计~~贴者有分,嘿嘿
偶自己先帖一个:
大虾表笑话俺^_^
using   System;
using   System.Data;
using   System.Collections;
using   System.Data.SqlClient;

namespace   com.DataAccess
{
       
        public   enum   DBType
        {
                SQL,Access,Oracle
        }

        public   interface   IDataAccess
        {
                IDbConnection   Connection   {   get;}
                void   Open();
                void   Close();
                void   BeginTrans();
                void   CommitTrans();
                void   RollBackTrans();
                int   ExecNonQuery(string   cmdText,   CommandType   cmdType,   Hashtable   ht);
                IDataReader   ExecReader(string   cmdText,   CommandType   cmdType,   Hashtable   ht,   bool   closeConnection);
                DataTable   ExecDataTable(string   cmdText,   CommandType   cmdType,   Hashtable   ht);
                DataSet   ExecDataSet(string   cmdText,   CommandType   cmdType,   Hashtable   ht);
                object   ExecScalar(string   cmdText,   CommandType   cmdType,   Hashtable   ht);
        }

        public   class   SQLAccess   :   IDataAccess
        {
                private   SqlConnection   myCon;
                private   SqlTransaction   myTrans;
                private   bool   inTrans   =   false;

                public   SQLAccess(string   strConn)
                {
                        myCon   =   new   SqlConnection(strConn);
                }

                public   IDbConnection   Connection
                {
                        get   {   return   myCon;   }
                }

                public   void   Open()
                {
                        if   (myCon.State   !=   ConnectionState.Open)
                                myCon.Open();


                }

                public   void   Close()
                {
                        if   (myCon.State   ==   ConnectionState.Open)
                                myCon.Close();
                }

                public   void   BeginTrans()
                {
                        myTrans   =   myCon.BeginTransaction();
                        inTrans   =   true;
                }

                public   void   CommitTrans()
                {
                        myTrans.Commit();
                        inTrans   =   false;
                }

                public   void   RollBackTrans()
                {
                        myTrans.Rollback();
                        inTrans   =   false;
                }

                public   object   ExecScalar(string   cmdText,   CommandType   cmdType,   Hashtable   ht)
                {
                        SqlCommand   myCmd   =   new   SqlCommand();
                        AppendCommand(myCmd,   cmdText,   cmdType,   ht);
                        try
                        {
                                return   myCmd.ExecuteScalar();
                        }
                        catch
                        {
                                return   null;
                        }
                }

                public   IDataReader   ExecReader(string   cmdText,   CommandType   cmdType,   Hashtable   ht,   bool   closeConnection)


                {
                        SqlCommand   myCmd   =   new   SqlCommand();
                        AppendCommand(myCmd,   cmdText,   cmdType,   ht);
                        try
                        {
                                if(closeConnection)
return   myCmd.ExecuteReader(CommandBehavior.CloseConnection);
else
return   myCmd.ExecuteReader();
                        }
                        catch
                        {
                                return   null;
                        }
                }

                public   DataTable   ExecDataTable(string   cmdText,   CommandType   cmdType,   Hashtable   ht)
                {
                        SqlCommand   myCmd   =   new   SqlCommand();
                        AppendCommand(myCmd,   cmdText,   cmdType,   ht);
                        SqlDataAdapter   myDa   =   new   SqlDataAdapter(myCmd);
                        DataTable   myDt   =   null;
                        try
                        {
                                myDt   =   new   DataTable();
                                myDa.Fill(myDt);
                        }
                        catch{}
                        return   myDt;
                }

                public   int   ExecNonQuery(string   cmdText,   CommandType   cmdType,   Hashtable   ht)
                {
                        SqlCommand   myCmd   =   new   SqlCommand();
                        AppendCommand(myCmd,   cmdText,   cmdType,   ht);
                        if   (inTrans)


                                myCmd.Transaction   =   myTrans;
                        int   i   =   0;
                        try
                        {
                                i   =   myCmd.ExecuteNonQuery();
                        }
                        catch
                        {
                                i   =   -1;
                        }
                        return   i;
                }

                public   DataSet   ExecDataSet(string   cmdText,   CommandType   cmdType,   Hashtable   ht)
                {
                        SqlCommand   myCmd   =   new   SqlCommand();
                        AppendCommand(myCmd,   cmdText,   cmdType,   ht);
                        SqlDataAdapter   myDa   =   new   SqlDataAdapter(myCmd);
                        DataSet   myDs   =   null;
                        try
                        {
                                myDs   =   new   DataSet();
                                myDa.Fill(myDs);
                        }
                        catch   {   }
                        return   myDs;
                }

                public   void   AppendCommand(SqlCommand   myCmd,   string   cmdText,   CommandType   cmdType,   Hashtable   ht)
                {
                        myCmd.Connection     =   myCon;
                        myCmd.CommandText   =   cmdText;
                        myCmd.CommandType   =   cmdType;



                        if   (ht   !=   null)
                        {
                                IDictionaryEnumerator   it   =   ht.GetEnumerator();
                                while   (it.MoveNext())
                                {
                                        SqlParameter   paras   =   new   SqlParameter(it.Key.ToString(),   it.Value);
                                        myCmd.Parameters.Add(paras);
                                }
                        }
                }
        }

        /*================================
          *   此部分功能暂未实现
          *===============================*/
        //public   class   OleAccess   :   IDataAccess
        //{
 
        //}

        public   class   DbFactory
        {
                //防止类实例化
                private   DbFactory()   {   }

                //此处实现接口继承多态
                public   static   IDataAccess   CreateInstance(string   strConn)    
                {
                        return   new   SQLAccess(strConn);
                }
        }
}

[解决办法]

[解决办法]
接分
[解决办法]
先帮楼主顶起来!
[解决办法]
...
别光顶啊,帖一些你们常用的DAL啊~~~学习一下嘛~~
=====
一般用sqlheler就够了
[解决办法]
你这个是asp.net1.1还是2.0,我正急需2.0的呢,有哪位大峡提供一下,本来正在转2005
[解决办法]
http://www.51aspx.com/Tags/2/

热点排行