首页 > 开发 > 综合 > 正文

com.joybase.DB.dll源代码(4)

2024-07-21 02:22:35
字体:
来源:转载
供稿:网友
/// <summary>
  /// 内部保护的数据库连接类
  /// </summary>
  protected abstract class provider
  {
   //一个静态的连接接口;
   private static system.data.idbconnection conn;
   /// <summary>
   /// 构造方法,设为私有类型,是防止外部无效的引用;
   /// </summary>
   protected provider()
   {
    system.data.idbcommand x=new system.data.oledb.oledbcommand();
   }
   /// <summary>
   /// 返回数据库边接类型
   /// </summary>
   public static dbtype type
   {
    get
    {
     
     return provider.m_dbtype;
    }
    set
    {
     provider.m_dbtype=value;
    }
   }
   private static string m_connectionstring;
   private static string m_connectionstringsetname;
   /// <summary>
   /// 数据库连接字符串设置名称
   /// </summary>
   public static string connectionsetname
   {
    set
    {
     provider.m_connectionstringsetname=value;
    }
   }
   /// <summary>
   /// 数据库连接字符串
   /// </summary>
   public static string connectionstring
   {
    set
    {
     provider.m_connectionstring=value;
    }
   }
   private static dbtype m_dbtype;
   
   /// <summary>
   /// 获得数据库连接接口
   /// </summary>
   /// <returns>返回一个连接</returns>
   public static system.data.idbconnection getconn()
   {
    string connstr="";
    try{
    //system.threading.thread.getdomain().unhandledexception+=new unhandledexceptioneventhandler(throwdbexception);
     if(provider.m_connectionstring==""||provider.m_connectionstring==null)
     {
      if(provider.m_connectionstringsetname.trim()=="")
      {
       connstr=system.configuration.configurationsettings.appsettings["database.connectionstring"];
      }
      else
      {
       connstr=system.configuration.configurationsettings.appsettings[provider.m_connectionstringsetname];
      }
      
     }
     else
     {
      connstr=provider.m_connectionstring;
     }
     if(connstr==null||connstr=="")
     {
      throw new joybasedbexception("连接字符串为空或者是null类型,请检查您的connectionstring以及connectionsetname是否进行正确设置,或者阅读相关说明.");
     }
     //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) provider.type=dbtype.sqlclient;
     else provider.type=dbtype.oledb;
     //throw new exception("here");
    
     if(m_dbtype==dbtype.sqlclient)
     {
      conn=new system.data.sqlclient.sqlconnection(connstr);
     }
     else
     {
      conn=new system.data.oledb.oledbconnection(connstr);
     }
    }
    catch(exception e)
    {
     string reason="(1)未设置数据库连接字符串,请重新检查连接字符串/r/n(2)目标数据库不存在,或者是没有启动数据库或者无法登录;/r/n(3)连接字符串设置不正确,请按照标准的连接方式来写。/r/n";
     throw new joybasedbexception(e.message,reason);
    }
    return conn;
   }
  }
}国内最大的酷站演示中心!
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表