zoukankan      html  css  js  c++  java
  • .Net与Oracle的数据库连接

    ODBC     
        New   version:   
      "Driver={Microsoft   ODBC   for   Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;"     

      Old   version:   
      "Driver={Microsoft   ODBC   Driver   for   Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;"     
        OLE   DB,   OleDbConnection   (.NET)     
        Standard   security:   
         "Provider=msdaora;Data   Source=MyOracleDB;User   Id=UserName;Password=asdasd;"    
      This   one's   from   Microsoft,   the   following   are   from   Oracle  
        Standard   Security:    
      "Provider=OraOLEDB.Oracle;Data   Source=MyOracleDB;User   Id=Username;Password=asdasd;"     
     
        Trusted   Connection:   
      "Provider=OraOLEDB.Oracle;Data   Source=MyOracleDB;OSAuthent=1;"     
     
        OracleConnection   (.NET)     
       
        Standard:   
      "Data   Source=MyOracleDB;Integrated   Security=yes;"    
      This   one   works   only   with   Oracle   8i   release   3   or   later  
        Specifying   username   and   password:  
       
      "Data   Source=MyOracleDB;User   Id=username;Password=passwd;Integrated   Security=no;"    
      This   one   works   only   with   Oracle   8i   release   3   or   later  
        Declare   the   OracleConnection:  
       
      C#:  
      using   System.Data.OracleClient;  

    <connectionStrings>
      <add name="cms" connectionString="Data Source=ORAPUBLIC;Persist Security Info=false;User ID=dcuser;password=62111;Unicode=True" providerName="System.Data.OracleClient"/>


      OracleConnection   oOracleConn   =   new   OracleConnection();  
      oOracleConn.ConnectionString   =   "my   connection   string";  
      oOracleConn.Open();     
     
      VB.NET:  
      Imports   System.Data.OracleClient  
      Dim   oOracleConn   As   OracleConnection   =   New   OracleConnection()  
      oOracleConn.ConnectionString   =   "my   connection   string"  
      oOracleConn.Open()     
     
        Core   Labs   OraDirect   (.NET)     
        Standard:  
      "User   ID=scott;   Password=tiger;   Host=ora;   Pooling=true;   Min   Pool   Size=0;Max   Pool   Size=100;   Connection   Lifetime=0"    
       
        Data   Shape     
        
        MS   Data   Shape:  
      "Provider=MSDataShape.1;Persist   Security   Info=False;Data   Provider=MSDAORA;Data   Source=orac;user   id=username;password=mypw"
    开发人员应当注意不要依赖垃圾回收机制去释放数据库连接,因为当参数超出作用域时,数据库连接并没有得必要的关闭,这种数据库资源泄漏将导致建立新连接时抛出连接错误。

    建立数据库连接池
    当打开一个数据库连接时,一个数据库连接池也就创建了。数据库连接池的创建与数据库连接字符串精确的相关(包括空格、大小写)。所有的连接池是根据连接字符串来区分的。在创建一个新的数据库连接时,如果连接字符串不完全相同,将创建不同的连接池。

    一旦数据库连接池被创建,它将一直存在直到该进程结束。维护一个非活动状态的连接池几乎不需要什么系统开销。

    连接池中的数据库连接
    连接池根据唯一的连接字符串被创建。在连接池被创建的同时,连接池将创建最小的数据库连接,当连接不够用时,连接池将逐个添加数据库连接直到达到最大连接数,此后的连接请求将被加入请求队列里。当调用数据库连接对象的Close方法或Dispose方法时,数据库连接将被数据库连接池回收。

    当数据库连接使用完成后,要调用Close方法或Dispose方法将它返回连接池。没有显式释放的数据库连接可能会没有返回连接池。

    注意不要在类的Finalize方法中调用任何管理类如Connection,DataReader等的Finalize方法,必须将数据库连接的释放权交给连接池。

    释放数据库连接
    当数据库连接超时或服务已经完成时,连接池将会将其资源释放,这只能通过试图与数据库通讯来判断。如果发现数据库连接不可用,它将被标记为不可用资源。数据库连接池将定时扫描数据库连接,释放所有不可用资源。

    如果发现现有的数据库连接不可用,那么可能是该连接被数据库连接池标记为不可用资源了,这时将抛出一个异常。尽管如此,你还是必须释放连接,将它返回连接池。

    支持Transaction
    数据库连接池内的数据库连接是按照Transaction Context划分的,每当连接池接到连接请求时,他将返回与请求者Transaction Context相匹配的数据库连接。因此,每个连接池都由数个Transaction Context相关的数据库连接和一个Transaction Context无关的数据库连接组成。当数据库连接被返回连接池时,它将被放回对应的Transaction Context组中。

    用连接字符串关键字控制数据库连接池
    OracleConnection对象的属性ConnectionString有一些能支持连接池控制的key-value字符串。下表是这些key-value字符串的详细说明。

    名称
    默认值
    说明

    Connection Lifetime
    0
    当数据库连接被返回到连接池中时,它的创建时间将与当前时间比较,如果超过了Connection Lifetime规定的时间,它将被释放掉。

    为0时将被视为最大连接时间。

    Enlist
    'true'
    当此值为true时,池中现存的所有数据库连接将被加入到它的创建线程的Transaction Context中。如果不存在这个Transaction Context则无任何变化。

    Max Pool Size
    100
    连接池能建立的最大数据库连接数。

    Min Pool Size
    0
    连接池要保持的最小数据库连接数。

    Pooling
    'true'
    当设为true时,数据库连接将由相应的连接池管理。

  • 相关阅读:
    ubuntu14.04 Cannot find OpenSSL's <evp.h>
    git 常用命令
    Python3常用模块的安装
    Centos7 安装配置优化mysql(mariadb分支)
    Centos7 编译安装python3
    Centos6.5搭建git远程仓库
    年轻
    springboot 报错Field XXX required a bean of type XXX that could not be found.
    springboot 启动报错[classpath:/application.yml] but snakeyaml was not found on the classpath
    idea 使用点击maven clean/install或maven其他命令失败,显示:乱码+archetypeCatalog=internal
  • 原文地址:https://www.cnblogs.com/jamin/p/1295127.html
Copyright © 2011-2022 走看看