首页 > 开发 > 综合 > 正文

一个数据库操作类的实例(二.Provider类)

2024-07-21 02:23:46
字体:
来源:转载
供稿:网友
  • 本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。
  • using system;
    namespace com.joybase.db
    {
    /// <summary>
    /// 数据库连接提供类
    /// </summary>
    public class provider
    {
      //一个静态的连接接口;
      private static system.data.idbconnection conn;
      /// <summary>
      /// 构造方法,设为私有类型,是防止外部无效的引用;
      /// </summary>
      protected provider()
      {
       //
       // todo: add constructor logic here
       //
       system.data.idbcommand x=new system.data.oledb.oledbcommand();
          
      }
    //  /// <summary>
    //  /// 数据库连接类型,即判断是system.data.sqlclient类型或者是system.data.oledb类型的。
    //  /// </summary>
    //  private static dbtype databasetype
    //  {
    //   get
    //   {
    //    //从配置文件当中读取数据库类型字符串
    //    string m_dbtype=system.configuration.configurationsettings.appsettings["database.type"];
    //    //如果未设置默认为system.data.sqlclient类型的连接
    //    if(m_dbtype==null)
    //    {
    //     return dbtype.sqlclient;
    //    }
    //    else
    //    {
    //     //如果为空或者为mssqlserver2000,则使用system.data.sqlclient类型的连接
    //     if(m_dbtype.trim()==""||m_dbtype.trim().toupper()=="mssqlserver2000"||m_dbtype.trim().toupper()=="mssqlserver7")
    //     {
    //      return dbtype.sqlclient;
    //     }
    //     //其它则返回system.data.oledb类型的连接
    //     else
    //     {
    //      if(m_dbtype.trim().toupper()=="oledb")
    //      {
    //       return dbtype.oledb;
    //      }
    //     }
    //
    //    }
    //    return dbtype.oledb;
    //
    //   }
    //
    //
    //  }
      /// <summary>
      /// 重载getconn(string)方法,此时连接字符串的标签名将为“database.connectionstring”
      /// <seealso cref="getconn(string) "/>
      /// </summary>
      ///  <returns>返回一个连接</returns>
      public static system.data.idbconnection getconn()
      {
       return provider.getconn("");
      }
      /// <summary>
      /// 获得数据库连接接口
      /// </summary>
      /// <param name="p_connstringsetname">一个在config文件中设置连接字符串的标签名</param>
      /// <returns></returns>
      public static system.data.idbconnection getconn(string p_connstringsetname)
      {
       
    //   if(conn==null)
    //   {
        string connstr="";
        if(p_connstringsetname.trim()=="")
        {
         connstr=system.configuration.configurationsettings.appsettings["database.connectionstring"];
        }
        else
        {
         connstr=system.configuration.configurationsettings.appsettings[p_connstringsetname];
        }
        if(connstr==null||connstr=="")
        {
         throw new exception("not find connection string!");
        }
        dbtype m_dbtype;//=provider.databasetype;
        /*                              
         * 注释:我们对前面的编码进行了部分的修改,鉴于system.data.sqlclient的连接
         * 字符串当中不可能出现"provider"字样,所以我们根据是否有provider字样来判断
         * 该连接是基于system.data.sqlclient的或者system.data.oledb的。
         * 参考资料:
         * 可以将 connectionstring 属性设置为单个单元。(不能为 sqlconnection 对象指定 provider 属性。)
         * –或–
                     *
         * 可以设置单个属性(datasource、database、username 等等)。如果设置单个属性,则将为您生成连接字符串。
         * 注意   在连接字符串中存储用户名和密码有安全性设置的意味。有关详细信息,请参阅introduction to ado.net connection design tools。
                     *
         */
        if(connstr.tolower().indexof("provider")==-1) m_dbtype=dbtype.sqlclient;
        else m_dbtype=dbtype.oledb;
        try
        {
         if(m_dbtype==dbtype.sqlclient)
         {
          conn=new system.data.sqlclient.sqlconnection(connstr);
         }
         else
         {
          conn=new system.data.oledb.oledbconnection(connstr);
         }
        }
        catch
        {
         throw new exception("error to connect db!");
        }
    //   }
       //if(conn.state!=system.data.connectionstate.closed) conn.close();
       return conn;
       
      }
      
    }
    /// <summary>
    /// 枚举类型,即一个数据库连接类型的枚举
    /// </summary>
    enum dbtype
    {
      sqlclient=0,
      oledb=1
    }
    }
     
    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表