A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

代码如下:循环第一遍时创建正常,第二遍则失败.已注册驱动,
for (intx=0;x<2;x++){
    DriverManager.getConnection(connectionUrl);
}
出错信息:
2013-3-16 9:19:43 com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin

警告: ConnectionID:2 ClientConnectionId: f8d28e28-d3f2-447a-a703-82bffc9b3b12 Prelogin error: host localhost port 1434 Error reading prelogin response: Connection reset ClientConnectionId:f8d28e28-d3f2-447a-a703-82bffc9b3b12

2013-3-16 9:19:44 com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin

警告: ConnectionID:2 ClientConnectionId: c8a24ac9-0b43-4893-ac5a-1372c5be9c66 Prelogin error: host localhost port 1434 Error reading prelogin response: Connection reset ClientConnectionId:c8a24ac9-0b43-4893-ac5a-1372c5be9c66

2013-3-16 9:19:44 com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin

警告: ConnectionID:2 ClientConnectionId: 8ef10e7b-3cb8-4a85-be25-d66d0270ffaa Prelogin error: host localhost port 1434 Error reading prelogin response: Connection reset ClientConnectionId:8ef10e7b-3cb8-4a85-be25-d66d0270ffaa

2013-3-16 9:19:44 com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin

警告: ConnectionID:2 ClientConnectionId: eaa674c5-ca8a-441c-be42-4c3abbb4d2ac Prelogin error: host localhost port 1434 Error reading prelogin response: Connection reset ClientConnectionId:eaa674c5-ca8a-441c-be42-4c3abbb4d2ac

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

6 个回复

正序浏览
本帖最后由 刘军亭 于 2013-3-16 14:47 编辑
itserious 发表于 2013-3-16 14:20
不好意思上面的URL被改变了!请看下面:
  1. public class MyDataSource {
  2.         private String connectionUrl = "jdbc:sqlserver://localhost:1434;" +
  3.                 "databaseName=WYMS;integratedSecurity=true;";

  4.         private LinkedList<Connection> connectionsPool = new LinkedList<Connection>();

  5.         // 初始化的connection个数
  6.         private static int initCount = 5;
  7.         // 最大连接数
  8.         private static int maxCount = 10;
  9.         // 当前连接数
  10.         int currentCount = 0;

  11.         // 通过构造函数初始化2个连接存入到List集合,
  12.         public MyDataSource() {
  13.                 for (int x = 1; x < 3; x++) {
  14.                         try {
  15.                                 this.connectionsPool.addLast(this.creatConnection());//<b>主要就是这里出了问题,第一遍可以,第二遍就挂了</b>
  16.                         } catch (SQLException e) {
  17.                                 throw new ExceptionInInitializerError("初始化连接失败");
  18.                         }
  19.                         this.currentCount++;
  20.                 }
  21.         }

  22.         // 给调用此方法者一个connection对象.从集合中删除一个连接
  23.         public Connection getConnection() throws SQLException {
  24.                 synchronized (connectionsPool) {
  25.                         if (this.connectionsPool.size() > 0)
  26.                                 return this.connectionsPool.removeFirst();
  27.                         if (this.currentCount < maxCount) {
  28.                                 this.currentCount++;
  29.                                 return this.creatConnection();
  30.                         }

  31.                         throw new SQLException("连接以达到最大值");
  32.                 }
  33.         }

  34.         // 把一个不用的connection对象放入到集合中,供下次使用
  35.         public void free(Connection conn) {
  36.                 this.connectionsPool.addLast(conn);
  37.         }

  38.         // 通过DriverManager对象创建一个连接.对connection进行包装增强,
  39.         private Connection creatConnection() throws SQLException {
  40.         
  41.                 Connection realConn = DriverManager.getConnection(connectionUrl);
  42.                 return realConn;
  43.                  //使用动态代理的方式
  44.                 //MyConnectionHandler proxy = new MyConnectionHandler(this);
  45.                //  return proxy.bind(realConn);
  46.                

  47.                 // 使用MyConnection时候的代理类的方式
  48.                 // MyConnection myConnection = new MyConnection(realConn,this);
  49.                  //return myConnection;
  50.                  
  51.         }
  52. }
复制代码
回复 使用道具 举报
itserious 发表于 2013-3-16 14:20
不好意思上面的URL被改变了!请看下面:
  1. public final class JdbcUtils {
  2.        
  3.         //创建一个连接池对象.
  4.         private static MyDataSource myDataSource = null;
  5.        
  6.         private JdbcUtils(){
  7.         }
  8.         //用静态代码块,注册驱动,因为在类加载的时候,只做一次。
  9.         static{
  10.                 try {
  11.                         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  12.                         myDataSource = new MyDataSource();
  13.                 } catch (ClassNotFoundException e) {
  14.                         throw new ExceptionInInitializerError();
  15.                 }
  16.         }
  17.         //创建数据库连接。
  18.         public static Connection getConnection() throws SQLException{
  19.                 return myDataSource.getConnection();
  20.         }
  21.         //释放资源,必须逆序的释放
  22.         public static void free(ResultSet rs,Statement st,Connection conn){
  23.                 try{
  24.                         if(rs != null)
  25.                                 rs.close();
  26.                 }catch(SQLException e){
  27.                         e.printStackTrace();
  28.                 }finally{
  29.                         try{
  30.                                 if(st != null)
  31.                                         st.close();
  32.                         }catch(SQLException e){
  33.                                 e.printStackTrace();
  34.                         }finally{
  35.                                 if(conn != null)
  36.                                         try {
  37.                                                 conn.close();
  38.                                         } catch (SQLException e) {
  39.                                                 e.printStackTrace();
  40.                                         }
  41.                         }       
  42.                 }
  43.         }
  44. }
复制代码
回复 使用道具 举报
itserious 发表于 2013-3-16 14:20
不好意思上面的URL被改变了!请看下面:

跟你的差不多,我创建一个连接时候没事.如果连着创建两个就不行了
回复 使用道具 举报
  1. URL="jdbc:oracle:thin:@localhost:1521:orcl";
复制代码
不好意思上面的URL被改变了!请看下面:
回复 使用道具 举报
请把你的db 帖出来看一下,
你也可以参照一下我写的db,
比较一下吧
package www.zit.db;

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

public class Db {
        public static final String DRIVER="oracle.jdbc.driver.OracleDriver";
        public static final String USER="system";
        public static final String PASSWORD="zitadmin";
        public static final String URL="jdbc:oracle:thin:@localhost:1521:orcl";
        static{
                try {
                        Class.forName(DRIVER);
                } catch (ClassNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }
        public Connection getConnection() throws SQLException{
               
                return DriverManager.getConnection(URL, USER, PASSWORD);
        }
       
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马