当前位置: 技术问答>java相关
头都大了,高手请指教,参与都有分!
来源: 互联网 发布时间:2015-09-12
本文导语: 为什么这个连接池不能连 SQL server2000的数据库,设jdbc-odbc不行,mssqlserver2000 for jdbc也不行,我原来连oracle都没问题.而且用jdbc_odbc 桥,我改为普通的连接语句又连得上,真是搞不懂,是不是这个连接池不支持sqlserver...
为什么这个连接池不能连 SQL server2000的数据库,设jdbc-odbc不行,mssqlserver2000 for jdbc也不行,我原来连oracle都没问题.而且用jdbc_odbc
桥,我改为普通的连接语句又连得上,真是搞不懂,是不是这个连接池不支持sqlserver2000!
报错为:
Mon Sep 23 15:53:17 CST 2002: 成功注册JDBC驱动程序sun.jdbc.odbc.JdbcOdbcDriver
Mon Sep 23 15:53:18 CST 2002: 成功创建连接池j2
Mon Sep 23 15:53:18 CST 2002: 成功创建连接池j1
Mon Sep 23 15:53:18 CST 2002: 无法创建下列URL的连接: jdbc:odbc:xx
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]用户 'sa ' 登录失败。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6031)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6188)
package sysmanager;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.Date;
/**
* 类Dataconn支持对一个或多个由属性文件定义的数据库连接
* 池的访问.客户程序可以调用getSql()方法访问本类的唯一实例.
*/
public class Dataconn
{
static private Dataconn instance; // 唯一实例
static private int clients;
private Vector drivers = new Vector();
private PrintWriter log;
private Hashtable pools = new Hashtable();
/**
* 返回唯一实例.如果是第一次调用此方法,则创建实例
*
* @return Dataconn 唯一实例
*/
static synchronized public Dataconn getSql()
{
if (instance == null)
{
instance = new Dataconn();
}
clients++;
return instance;
}
/**
* 建构函数私有以防止其它对象创建本类实例
*/
private Dataconn()
{
init();
}
/**
* 将连接对象返回给由名字指定的连接池
*
* @param name 在属性文件中定义的连接池名字
* @param con 连接对象
*/
public void freeConnection(String name, Connection con)
{
DBConnectionPool pool = (DBConnectionPool) pools.get(name);
if (pool != null)
{
pool.freeConnection(con);
}
}
/**
* 获得一个可用的(空闲的)连接.如果没有可用连接,且已有连接数小于最大连接数
* 限制,则创建并返回新连接
*
* @param name 在属性文件中定义的连接池名字
* @return Connection 可用连接或null
*/
public Connection getConnection(String name)
{
DBConnectionPool pool = (DBConnectionPool) pools.get(name);
if (pool != null)
{
return pool.getConnection();
}
return null;
}
/**
* 获得一个可用连接.若没有可用连接,且已有连接数小于最大连接数限制,
* 则创建并返回新连接.否则,在指定的时间内等待其它线程释放连接.
*
* @param name 连接池名字
* @param time 以毫秒计的等待时间
* @return Connection 可用连接或null
*/
public Connection getConnection(String name, long time)
{
DBConnectionPool pool = (DBConnectionPool) pools.get(name);
if (pool != null)
{
return pool.getConnection(time);
}
return null;
}
/**
* 关闭所有连接,撤销驱动程序的注册
*/
public synchronized void closeSql()
{
// 等待直到最后一个客户程序调用
if (--clients != 0)
{
return;
}
Enumeration allPools = pools.elements();
while (allPools.hasMoreElements())
{
DBConnectionPool pool = (DBConnectionPool) allPools.nextElement();
pool.closeSql();
}
Enumeration allDrivers = drivers.elements();
while (allDrivers.hasMoreElements())
{
Driver driver = (Driver) allDrivers.nextElement();
try
{
DriverManager.deregisterDriver(driver);
log("撤销JDBC驱动程序 " + driver.getClass().getName()+"的注册");
}
catch (SQLException e)
{
log(e, "无法撤销下列JDBC驱动程序的注册: " + driver.getClass().getName());
}
}
}
}
桥,我改为普通的连接语句又连得上,真是搞不懂,是不是这个连接池不支持sqlserver2000!
报错为:
Mon Sep 23 15:53:17 CST 2002: 成功注册JDBC驱动程序sun.jdbc.odbc.JdbcOdbcDriver
Mon Sep 23 15:53:18 CST 2002: 成功创建连接池j2
Mon Sep 23 15:53:18 CST 2002: 成功创建连接池j1
Mon Sep 23 15:53:18 CST 2002: 无法创建下列URL的连接: jdbc:odbc:xx
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]用户 'sa ' 登录失败。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6031)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6188)
package sysmanager;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.Date;
/**
* 类Dataconn支持对一个或多个由属性文件定义的数据库连接
* 池的访问.客户程序可以调用getSql()方法访问本类的唯一实例.
*/
public class Dataconn
{
static private Dataconn instance; // 唯一实例
static private int clients;
private Vector drivers = new Vector();
private PrintWriter log;
private Hashtable pools = new Hashtable();
/**
* 返回唯一实例.如果是第一次调用此方法,则创建实例
*
* @return Dataconn 唯一实例
*/
static synchronized public Dataconn getSql()
{
if (instance == null)
{
instance = new Dataconn();
}
clients++;
return instance;
}
/**
* 建构函数私有以防止其它对象创建本类实例
*/
private Dataconn()
{
init();
}
/**
* 将连接对象返回给由名字指定的连接池
*
* @param name 在属性文件中定义的连接池名字
* @param con 连接对象
*/
public void freeConnection(String name, Connection con)
{
DBConnectionPool pool = (DBConnectionPool) pools.get(name);
if (pool != null)
{
pool.freeConnection(con);
}
}
/**
* 获得一个可用的(空闲的)连接.如果没有可用连接,且已有连接数小于最大连接数
* 限制,则创建并返回新连接
*
* @param name 在属性文件中定义的连接池名字
* @return Connection 可用连接或null
*/
public Connection getConnection(String name)
{
DBConnectionPool pool = (DBConnectionPool) pools.get(name);
if (pool != null)
{
return pool.getConnection();
}
return null;
}
/**
* 获得一个可用连接.若没有可用连接,且已有连接数小于最大连接数限制,
* 则创建并返回新连接.否则,在指定的时间内等待其它线程释放连接.
*
* @param name 连接池名字
* @param time 以毫秒计的等待时间
* @return Connection 可用连接或null
*/
public Connection getConnection(String name, long time)
{
DBConnectionPool pool = (DBConnectionPool) pools.get(name);
if (pool != null)
{
return pool.getConnection(time);
}
return null;
}
/**
* 关闭所有连接,撤销驱动程序的注册
*/
public synchronized void closeSql()
{
// 等待直到最后一个客户程序调用
if (--clients != 0)
{
return;
}
Enumeration allPools = pools.elements();
while (allPools.hasMoreElements())
{
DBConnectionPool pool = (DBConnectionPool) allPools.nextElement();
pool.closeSql();
}
Enumeration allDrivers = drivers.elements();
while (allDrivers.hasMoreElements())
{
Driver driver = (Driver) allDrivers.nextElement();
try
{
DriverManager.deregisterDriver(driver);
log("撤销JDBC驱动程序 " + driver.getClass().getName()+"的注册");
}
catch (SQLException e)
{
log(e, "无法撤销下列JDBC驱动程序的注册: " + driver.getClass().getName());
}
}
}
}
|
sa后面有空格?
|
你新建个用户试一下,密码一定要有的。
|
肯定是用户问题
|
应该是用户问题或者
输入法未切换到en
输入法未切换到en
|
应该是用户问题
|
sql server 里服务器,属性,security(安全),如果选的是windows only,那就是你数据库配置问题。该为 sql server and windows 即可。若不是这的问题,呵呵,你的源程序太长,我没看完,也就不知道了 :)
|
????
|
up
|
user=sa
password=
port=1433
password=
port=1433