编译时出现这个错误,jdbc的几个驱动都装了,也设在classpath了 请大家帮忙~ 谢谢了~cannot access com.microsoft.jdbc.base.BaseDriverfile com\microsoft\jdbc\base\BaseDriver.class not found
DriverManager.registerDriver(new com.microsoft.jdbc.sq
erver.SQLServerDriver());
代码如下
package mybean;import java.io.*;
import java.sql.*;
import java.util.*;
/**
*数据库连接池
*/
public class ConnManager {
int minConn=2; //连接池最少连接数
int maxConn=5; //连接池最多连接数
String user="sa"; //数据库用户名
String password=""; //数据库密码
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Demo;SelectMethod=direct"; //数据库连接字符串
String logFile="d:\\dbpool.log"; //日志文件路径
PrintWriter loger=null; //记录log的对象 int connAmount=0; //现有连接的个数
Stack connStack = new Stack(); //使用Stack保存数据库连接private static ConnManager instance;
/**
* 返回惟一实例。如果是第一次调用此方法,则创建该实例
*/
public static synchronized ConnManager getInstance(){
if (instance == null) {
instance = new ConnManager();
}
return instance;
}
/**
* 构造函数实现类的初始化
* 功能:打开log文件,注册驱动程序,根据最小连接数生成连接
*/
private ConnManager()
{
try {
loger = new PrintWriter(new FileWriter(logFile, true), true);
}catch (IOException ioe) {
System.err.println("无法打开日志文件: " + logFile);
loger = new PrintWriter(System.err);
}
//注册驱动程序
try{
DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
log("成功注册驱动程序");
}catch(Exception e){
log("无法注册驱动程序");
}
//根据最少连接数生成连接
for(int i=0;i<minConn;i++){
connStack.push(newConnection());
}
}
/**
* 将文本信息写入日志文件
*/
private void log(String msg) {
loger.println(new java.util.Date() + ": " + msg);
}
/**
* 将不再使用的连接返回给连接池
*/
public synchronized void freeConnection(Connection con) {
connStack.push(con); //将指定连接入栈
notifyAll(); //唤醒正在等待连接的进程
log("归还一个连接到连接池");
} /**
* 从连接池获得一个可用连接。如没有空闲的连接且当前连接数小于最大连接
* 数限制,则创建新连接。
*/
public synchronized Connection getConnection() {
Connection con = null;
log("从连接池申请一个连接");
log("现在可用的连接总数为:"+connStack.size());
if (!connStack.empty()) {
// 获取一个可用连接
con = (Connection)connStack.pop();
}else if (connAmount < maxConn) {
con = newConnection();
}
else{
try{
log("等待连接");
wait(100000);
return getConnection();
}catch(InterruptedException ie){}
}
return con;
} /**
* 创建新的连接
*/
private Connection newConnection() {
Connection con = null;
try {
con = DriverManager.getConnection(url, user, password);
connAmount++;
log("连接池创建一个新的连接");
}catch (SQLException e) {
log("无法创建下列url的连接:" + url);
return null;
}
return con;
}
} ^
DriverManager.registerDriver(new com.microsoft.jdbc.sq
erver.SQLServerDriver());
代码如下
package mybean;import java.io.*;
import java.sql.*;
import java.util.*;
/**
*数据库连接池
*/
public class ConnManager {
int minConn=2; //连接池最少连接数
int maxConn=5; //连接池最多连接数
String user="sa"; //数据库用户名
String password=""; //数据库密码
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Demo;SelectMethod=direct"; //数据库连接字符串
String logFile="d:\\dbpool.log"; //日志文件路径
PrintWriter loger=null; //记录log的对象 int connAmount=0; //现有连接的个数
Stack connStack = new Stack(); //使用Stack保存数据库连接private static ConnManager instance;
/**
* 返回惟一实例。如果是第一次调用此方法,则创建该实例
*/
public static synchronized ConnManager getInstance(){
if (instance == null) {
instance = new ConnManager();
}
return instance;
}
/**
* 构造函数实现类的初始化
* 功能:打开log文件,注册驱动程序,根据最小连接数生成连接
*/
private ConnManager()
{
try {
loger = new PrintWriter(new FileWriter(logFile, true), true);
}catch (IOException ioe) {
System.err.println("无法打开日志文件: " + logFile);
loger = new PrintWriter(System.err);
}
//注册驱动程序
try{
DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
log("成功注册驱动程序");
}catch(Exception e){
log("无法注册驱动程序");
}
//根据最少连接数生成连接
for(int i=0;i<minConn;i++){
connStack.push(newConnection());
}
}
/**
* 将文本信息写入日志文件
*/
private void log(String msg) {
loger.println(new java.util.Date() + ": " + msg);
}
/**
* 将不再使用的连接返回给连接池
*/
public synchronized void freeConnection(Connection con) {
connStack.push(con); //将指定连接入栈
notifyAll(); //唤醒正在等待连接的进程
log("归还一个连接到连接池");
} /**
* 从连接池获得一个可用连接。如没有空闲的连接且当前连接数小于最大连接
* 数限制,则创建新连接。
*/
public synchronized Connection getConnection() {
Connection con = null;
log("从连接池申请一个连接");
log("现在可用的连接总数为:"+connStack.size());
if (!connStack.empty()) {
// 获取一个可用连接
con = (Connection)connStack.pop();
}else if (connAmount < maxConn) {
con = newConnection();
}
else{
try{
log("等待连接");
wait(100000);
return getConnection();
}catch(InterruptedException ie){}
}
return con;
} /**
* 创建新的连接
*/
private Connection newConnection() {
Connection con = null;
try {
con = DriverManager.getConnection(url, user, password);
connAmount++;
log("连接池创建一个新的连接");
}catch (SQLException e) {
log("无法创建下列url的连接:" + url);
return null;
}
return con;
}
} ^
解决方案 »
- 请问在软件公司中都从事什么方面的开发
- ActionForm 转发方面问题 :)
- 小弟遇到了select的问题,怎么办?
- StrutsTestCase中setContextDirectory的问题
- 怎 么 取 得 指 定 数 据 表 中 的 所有 或 指定 字段名?用JDBC
- 谁能给我介绍一下当前最常用的数据库连接池?
- 一个关于bigint的问题,难道就没人知道吗?急~~~~~~~~~
- 这段代码是jsp论坛设计实现浏览帖子的功能代码!请高手帮我翻译下!谢谢大家帮忙!!!!!!!!!
- 完全不知道什么情况。各位大神见过吗?求解决
- 请问关于jsp上传的问题。我是新手请执教!
- JSP程序调用如何调用一个电脑外接信号灯,让其开关
- 一个我无法看懂的错误 希望高手帮帮忙
DriverManager.registerDriver(new com.microsoft.jdbc.sq
erver.SQLServerDriver()); 这是没有找到驱动类,
请问楼主导入相关的驱动jar包了吗?
CLASSPATH的设置.;%Java_Home%\lib\tools.jar;
%Java_Home%\lib\dt.jar;
.;%tomcat_home\common\lib\msbase.jar;
%tomcat_home%\common\lib\msutil.jar;
%tomcat_home%\common\lib\mssqlserver.jar;
%tomcat_home%\common\lib\servlet-api.jar