我想創建一個連接到我的數據庫,當我用主方法測試我的代碼時,它可以無縫工作。但是,試圖通過Tomcat的7訪問它時,它失敗,錯誤:如何解決:在使用池時,找不到適用於jdbc:mysql:// localhost/dbname的驅動程序錯誤?
No suitable driver found for jdbc:mysql://localhost/dbname.
我使用的池。我也在WEB-INF/lib和.classpath中放入了mysql連接器(5.1.15),dbcp(1.4)和pool(1.4.5)庫。我正在使用Eclipse IDE。我的數據庫驅動程序代碼是:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.tomcat.dbcp.dbcp.ConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.DriverManagerConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.PoolingDriver;
import org.apache.tomcat.dbcp.pool.impl.GenericObjectPool;
public class DatabaseConnector {
public static String DB_URI = "jdbc:mysql://localhost/dbname";
public static String DB_USER = "test";
public static String DB_PASS = "password";
// Singleton instance
protected static DatabaseConnector _instance;
protected String _uri;
protected String _username;
protected String _password;
/**
* Singleton, so no public constructor
*/
protected DatabaseConnector(String uri, String username, String password) {
_uri = uri;
_username = username;
_password = password;
GenericObjectPool connectionPool = new GenericObjectPool(null);
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
_uri, _username, _password);
PoolableConnectionFactory poolableConnectionFactory =
new PoolableConnectionFactory(connectionFactory, connectionPool,
null, null, false, true);
PoolingDriver driver = new PoolingDriver();
driver.registerPool("test", connectionPool);
}
/**
* Returns the singleton instance
*/
public static DatabaseConnector getInstance() {
if (_instance == null) {
_instance = new DatabaseConnector(DB_URI, DB_USER, DB_PASS);
}
return _instance;
}
/**
* Returns a connection to the database
*/
public Connection getConnection() {
Connection con = null;
try {
con = DriverManager.getConnection("jdbc:apache:commons:dbcp:test");
} catch (SQLException e) {
throw new RuntimeException(e);
}
return con;
}
}
開始我的堆棧跟蹤:
Apr 5, 2011 9:49:14 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Login] in context with path [/Project]
threw exception
java.lang.RuntimeException: java.sql.SQLException:
No suitable driver found for jdbc:mysql://localhost/dbname
是什麼原因造成這個錯誤?
請注意,這是絕對不能使用Tomcat的連接池設施,正確的做法。 – BalusC 2011-04-05 19:09:20
另一件需要注意的是連接url的語法。我有'jdbc:mysql // localhost:3306'而不是'jdbc:mysql:// localhost:3306' – 2014-12-17 05:26:06