.net 如何使用oracle连接池

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net 如何使用oracle连接池相关的知识,希望对你有一定的参考价值。

.net 如何使用oracle连接池(oracle自带的) 1,只要连接字符串设置成Data Source=myOracleDB;User Id=myUsername; Password=myPassword;Min Pool Size=10;Connection Lifetime=120; Connection Timeout=60;Incr Pool Size=5;Decr Pool Size=2; 如果要使用连接池,是不是没次连接字符串都要写成一样的?如果下次连接字符串不一样了(同一运行着的程序)conn.open后返回的连接是什么连接 2,使用连接池后是一个有效的连接上被多个线程(同一个程序)分享还是被独占 若是被分享,那如果在这一连接上有多个线程对数据库做了update操作,并commit掉会出现什么问题啊? 恭候高手回答,谢谢!

参考技术A 连接是一样的,只是执行的sql不一样,至于第二条,是可以不同的人同时连接数据库,不会因为数据库开和关受影响,至于你说的多个人同时用数据库做同一个update操作,这个不可能进行,其实那只是说你可以不用管别人调用数据库连接是否关了,你也可以调用数据库,和他没关系,这就是同时操作互不影响,而不是你说的一个连接上有多个线程对数据库做了update操作,这个是不可能的
总结,连接池的作用是1个以上的人调用数据库连接时不会因为其他人对数据库进行打开或关闭而影响其他人的连接

如何在java中进行连接池?

【中文标题】如何在java中进行连接池?【英文标题】:how to do connection pooling in java? 【发布时间】:2012-04-29 14:17:31 【问题描述】:

我想了解connection pooling in java,我在我的应用程序中使用jsp, servlet and tomcat 6 server。我在java class dbconnection.java 中编写了以下代码:

我在 windows Xp OS 中使用类型 4 jdbc 与 oracle 10g EE 连接

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

    public class dbconnection    
     public Connection con = null;    
      public Connection getConnection() throws Exception, SQLException
       
         try
           
          Class.forName("oracle.jdbc.driver.OracleDriver");
           con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:abc","abc", "abc");           
           
           catch(Exception e)
                     
           
        return con;
        
    public void removeConnection() throws SQLException
  
    con.close();
  
 

然后我在 servlet 中检索connection,如下所示:

try
 dbconnection db= new dbconnection();

 Connection con=db.getConnection();
 
 catch(Exception e)
  
finally
 db.removeConnection();//removes connection

connection pooling 还是tomcat server 中需要一些配置或其他?

【问题讨论】:

查看此问答了解更多信息:***.com/questions/1458693/… 您的问题在这里得到解答:***.com/questions/2835090/jdbc-connection-pooling 不要这样做catch(Exception e) ,它会使调试变得不可能。 @artbristol 是的,但我应该怎么写catch statement?请帮帮我 检查的异常很痛苦。我通常只做catch(Exception e) throw new RuntimeException(e); ,但这取决于。 【参考方案1】:

连接池通过提前执行创建连接的工作来运行。 对于 JDBC 连接池,在应用程序服务器启动时会创建一个连接对象池。客户端可以访问连接池中的连接对象,并在数据库工作完成后将对象返回池中。

上下文.xml

   <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" 
maxActive="100" maxIdle="30" maxWait="10000" username="root" password="" 
driverClassName="com.mysql.jdbc.Driver"               
url="jdbc:mysql://localhost:3306/cdcol"/>

//这应该添加到服务器上下文,xml文件中。例如,如果您使用的是 apache 服务器,那么 context.xml 将位于 C:\apache-tomcat-6.0.26\conf\Context.xml

web.xml

  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/TestDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>

//这个应该加在本地项目的web.xml中。 (不在服务器的 web.xml 中)。

Context ctx=new InitialContext();
          Context envContext = (Context)ctx.lookup("java:comp/env");
          DataSource ds=(DataSource)envContext.lookup("jdbc/TestDB");//TestDB is the Database Name
          con=ds.getConnection();
          stmt = con.createStatement();

【讨论】:

我之前已经通知过您在链接到您自己的网站时需要披露的信息。此外,您的博文没有解决上面提出的问题......而且您在此处的文字也没有。 问题是关于如何进行连接池,并且有人问了一个例子。所以我把它指向解释连接池并给出实现示例的站点。 您没有透露它是您的站点,而您在此处的文字只是说明了连接池是什么。这不是答案。 编辑了答案。现在可以了吗?【参考方案2】:

您可以获取第三方库,也可以使用 Java EE 容器(例如,JBoss 或 WebSphere)为您提供的连接池。

为此,您需要配置和使用 JNDI 数据源。

以下是 Tomcat 的详细信息:

http://people.apache.org/~fhanik/jdbc-pool/jdbc-pool.html

http://www.tomcatexpert.com/blog/2012/01/24/using-tomcat-7-jdbc-connection-pool-production

【讨论】:

【参考方案3】:

连接池是所有主要 Web 和应用程序服务器中可用的功能。您可以找到使用 Tomcat 进行配置的简单示例。 Tomcat Connection Pooling

但是,如果您想编写自己的连接池,那么可以编写一些库。 Apache DBCP

【讨论】:

以上是关于.net 如何使用oracle连接池的主要内容,如果未能解决你的问题,请参考以下文章

连接中断后如何自动重新连接Oracle连接池?

如何从 .Net Core 连接到 Oracle 数据库连接

Tomcat 7 和 Oracle 连接池

带有数据库链接的 Oracle JDBC 连接池

C# 和 Oracle 12g - 每分钟运行的应用程序的连接池

Oracle 11g 连接重置错误