PeterXu的专栏

软件架构,设计模式,数据库,DotNet

用户操作
[即时聊天] [发私信] [加为好友]
peterXuID:peterreg
14419次访问,排名8816(-1),好友1人,关注者5人。
从事软件行业,关注软件架构及新技术
peterreg的文章
原创 49 篇
翻译 0 篇
转载 0 篇
评论 36 篇
peterXu的公告
最近评论
GAOXINGZHOUPANWEI:很好,谢谢啊,能够给些资料给我吗,我大二刚学VS2008,希望能得到高手的指教,谢谢,hagxz@163.com
xiaoxiao:buhao~~~
buhao

12:乱七八糟
gogo:学习...................
小鱼儿:写的非常精彩,继续关注!!!
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE,MYSQL)(四)收藏

    新一篇: 关于SQL语句的自动生成!(二) | 旧一篇: c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE,MYSQL)(三)

    作者PeterXu  来源:Blog.CSDN  Blog: http://blog.csdn.net/peterreg/
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。
    本文地址:http://blog.csdn.net/peterreg/archive/2008/04/02/2243126.aspx

    整个例子的完整代码如下,VS2008下编译测试通过,本人已通过它实现N个项目,欢迎大家评测,谢谢指教

    public enum DBType
        
    {
            Access,
            SQL,
            DB2,
            Oracle,
            MySQL
        }


        
    public interface IDBAccess
        
    {
            
    void Init(string strServer, string strDataBase, string strUser, string strPwd);
            
    void Open();
            
    void Close();
            
    bool TestConn();
            
    int RunNoQuery(string strCmd);
            DataTable RunQuery(
    string strCmd);
            DBType DBType 
    get;}
            
    int GetFiledMax(string strTable, string strField);
            DataTable Tables 
    get; }
            DataTable GetColumns();
            DataTable GetColumns(
    string strTable);
        }


        
    public static class DBAccessFactory
        
    {
            
    public static IDBAccess Create(DBType type)
            
    {
                IDBAccess IRet 
    = null;
                
    switch (type)
                
    {
                    
    case DBType.Access:
                        IRet 
    = new Access(type);
                        
    break;

                    
    case DBType.SQL:
                        IRet 
    = new SQL(type);
                        
    break;

                    
    default:
                        
    break;
                }

                
    return IRet;
            }


            
    private abstract class DBAccess : IDBAccess
            
    {
                
    protected DbConnection m_oConn = null;
                
    protected const string CON_strServer = "Server";
                
    protected const string CON_strDataBase = "Data Source";
                
    protected const string CON_strUser = "UID";
                
    protected const string CON_strPwd = "PWD";
                
    protected const string CON_strConnTimeOut = "Connect Timeout = 2";
                
    private DBType m_eDBType = DBType.Access;

                
    protected DBAccess(DBType type)
                
    {
                    
    this.m_eDBType = type;
                }


                
    public DBType DBType
                
    {
                    
    get return this.m_eDBType; }
                }


                
    public void Init(string strServer, string strDataBase, string strUser, string strPwd)
                
    {
                    
    this.InitConn(strServer, strDataBase, strUser, strPwd);
                }


                
    public void Open()
                
    {
                    
    if (this.m_oConn != null)
                    
    {
                        
    this.m_oConn.Open();
                    }

                }


                
    public int RunNoQuery(string strCmd)
                
    {
                    
    int iRet = 0;
                    
    try
                    
    {
                        DbCommand oCmd 
    = this.GetCmd(strCmd);
                        
    if (oCmd != null)
                        
    {
                            iRet 
    = oCmd.ExecuteNonQuery();
                        }

                    }

                    
    catch (Exception ex)
                    
    {
                        
    throw (new Exception(ex.Message));
                    }

                    
    return iRet;
                }


                
    public int GetFiledMax(string strTable, string strField)
                
    {
                    
    int iRet = -1;
                    DataTable dt 
    = this.RunQuery("Select Max(" + strField + ") From " + strTable);
                    
    if (dt != null && dt.Rows.Count == 1)
                    
    {
                        iRet 
    = dt.Rows[0][0is DBNull ? 0 : Convert.ToInt32(dt.Rows[0][0]);
                    }

                    
    return iRet;
                }


                
    public DataTable RunQuery(string strCmd)
                
    {
                    DataTable dt 
    = new DataTable();
                    DbDataAdapter adp 
    = this.DbAdp;
                    adp.SelectCommand 
    = this.GetCmd(strCmd);
                    adp.Fill(dt);
                    
    return dt;
                }


                
    public void Close()
                
    {
                    
    if (this.m_oConn != null && this.m_oConn.State == System.Data.ConnectionState.Open)
                    
    {
                        
    this.m_oConn.Close();
                    }

                }


                
    public bool TestConn()
                
    {
                    
    bool bRet = true;
                    
    try
                    
    {
                        
    if (this.m_oConn.State != System.Data.ConnectionState.Open)
                        
    {
                            
    this.m_oConn.Open();
                        }

                        bRet 
    = this.m_oConn.State == System.Data.ConnectionState.Open;
                    }

                    
    catch
                    
    {
                        bRet 
    = false;
                    }

                    
    this.Close();
                    
    return bRet;
                }


                
    public abstract DataTable Tables get; }
                
    public abstract DataTable GetColumns();
                
    public abstract DataTable GetColumns(string strTable);

                
    protected abstract void InitConn(string strServer, string strDataBase, string strUser, string strPwd);
                
    protected abstract DbCommand GetCmd(string strCmd);
                
    protected abstract DbDataAdapter DbAdp get;}
            }


            
    Access, SQL