java多线程连接池_java多线程、数据库连接池出错,请高手指正,谢谢!

本文讨论了一个Java程序中TestThread线程在执行数据库查询时遇到的'next'错误。通过实例展示了如何创建线程,以及在Controller、TestThread和数据库操作类之间的交互。问题可能源于ResultSet的处理或数据库连接管理。
摘要由CSDN通过智能技术生成

程序运行会报 关闭的语句: next 错误,请高手指正,谢谢!

1、TEST类,启动两个线程。

package main;

public class Test {

public static void main(String[] args){

TestThread t1 =new TestThread();

t1.setName("T1   ");

t1.start();

TestThread t2 =new TestThread();

t2.setName("T2   ");

t2.start();

}

}

2、线程类

package main;

import java.sql.ResultSet;

public class TestThread extends Thread {

int i = 0;

public void run() {

while (i < 20) {

i++;

try {

ResultSet rs = Controller.getInstance().getDB().Query("select SYSTIMESTAMP  from dual");

while (rs.next())

System.out.println(rs.getString(1));

System.out.println(this.getName() + i);

Thread.sleep(10);

} catch (Exception e) {

System.out.println(this.getName() + i + "     " + e.getMessage());

}

}

}

}

3、控制类

package main;

import datebase.OraPooledSQL;

public class Controller {

static Controller Instance = new Controller();

private OraPooledSQL DB = new OraPooledSQL();

public static Controller getInstance() {

return Instance;

}

public OraPooledSQL getDB() {

return DB;

}

}

4、数据库操作类

package datebase;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.sql.PooledConnection;

import oracle.jdbc.pool.OracleConnectionPoolDataSource;

public class OraPooledSQL {

private PooledConnection dbpool;

public OraPooledSQL() {

try {

String ConnectionURL = "jdbc:oracle:thin:@127.0.0.1:1521:XE";

String UserID = "ivruser";

String PassWord = "ivruser123";

OracleConnectionPoolDataSource ocpds = new OracleConnectionPoolDataSource();

ocpds.setURL(ConnectionURL);

ocpds.setUser(UserID);

ocpds.setPassword(PassWord);

dbpool = ocpds.getPooledConnection();

} catch (Exception ex) {

System.err.println("Error in PooledSQL-construct ");

ex.printStackTrace(System.err);

}

}

protected void finalize() {

if (dbpool != null) {

try {

System.out.println("finalize");

dbpool.close();

} catch (Exception ex) {

}

}

}

public  synchronized  ResultSet Query(String SQL) throws SQLException {

Statement stmt = null;

ResultSet rs = null;

Connection connection = null;

connection = dbpool.getConnection();

stmt = connection.createStatement();

rs = stmt.executeQuery(SQL);

return rs;

}

}

2011年5月31日 19:25

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值