0

好吧,我有一个非常尴尬的情况。我有一个工作的数据库管理器类,当我在它的桌面版本(Swing GUI)上运行它时,它可以工作,但是,当我在 servlet 上运行相同的类时,我得到一个奇怪的错误,它无法获得联系。我正在使用数据库池进行优化。

所以错误看起来如下:

Error in Database Connection: Error getting connection to database - java.sql.SQLException: No suitable driver found for jdbc:sqlserver://isd.ktu.lt:1433;DatabaseName=LN2012_bakDB2

包含所涉及方法的类如下所示:

    package Core;

import DataTypes.Parameters;
import Interfaces.OutputInterface;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.dbcp.ConnectionFactory;
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.PoolingDriver;
import org.apache.commons.pool.impl.GenericObjectPool;

/**
 *
 * @author arturas
 */
public class DatabaseConnection {

    String specificError = "Error in Database Connection: ";
    OutputInterface gui = null;
    boolean allowOutput = true;
    GenericObjectPool connectionPool;
    ConnectionFactory connectionFactory;
    PoolableConnectionFactory poolableConnectionFactory;
    PoolingDriver driver;
    Connection con = null;

    public DatabaseConnection(Parameters params) {                

        // parameters and the output                
        this.gui = params.getGui();

        // activate database pool
        connectionPool = new GenericObjectPool(null);
        connectionFactory = new DriverManagerConnectionFactory(params.getDbAdr(), params.getDbUser(), params.getDbPass());
        poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true);
        driver = new PoolingDriver();
        driver.registerPool("GenTreeDatabase", connectionPool);        
    }

    public void openConn() {
        if (allowOutput) gui.print("Getting connection to database");
        try {
            con = DriverManager.getConnection("jdbc:apache:commons:dbcp:GenTreeDatabase");
            if (con != null) {
                if (allowOutput) gui.print("Connection to database was successful");
            }
        } catch (SQLException ex) {
            gui.err(specificError + "Error getting connection to database - " + ex);
        }
    }

    public void closeConn() {
        try {
            con.close();
            if (allowOutput) {
                gui.print("Connection to database closed successfully");
            }
        } catch (SQLException ex) {
            gui.err(specificError + ex);
        }
    }

调用 openConn 方法中的 try 时出现错误。有人可以帮我吗?

4

2 回答 2

1

您收到此错误是因为您的类路径中没有驱动程序。可能在您的桌面应用程序中有。您需要将驱动程序.jar文件放入 servlet 容器的全局类路径或应用程序类路径中,它应该可以工作。

我更喜欢将驱动程序的 jar 添加到服务器全局类路径中,因为可以有多个应用程序将使用同一个.jar文件来加载驱动程序。

于 2012-06-10T12:04:10.747 回答
0

确保这一点

1)您应该确保 .jar 库与您正在使用的 RDMS 兼容
2)您在 netbeans 中包含用于连接的 .jar

projectproperties-->libraries

3)将.jar复制到
C:\Program Files\Apache Software Foundation\Apache Tomcat 6.0.26\lib
,这很重要

如果您的位置没有驱动程序,则找不到错误,但没有合适的,所以我认为版本必须不兼容,所以您使用的是什么版本的 sql server...

于 2012-06-10T12:44:33.390 回答