2012-06-10 55 views
0

好,我有一个很尴尬的局面。我有一个工作数据库管理类,当我在它(Swing GUI的)桌面版本上运行它其中工程,然而,当我在servlet的运行同一个班级,我得到一个奇怪的错误,它不能获得连接。我正在使用数据库池进行优化。错误获取从池连接到数据库使用的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的尝试被称为出现错误。 任何人都可以帮助我吗?

+2

你需要添加数据库驱动器jar在你的类路径。你使用哪种RDBMS? – DaTroop

+0

你正在使用哪种rdbms?和IDE过你[R使用 – shareef

+0

@shareef的RDBMS是MS SQL Server时,服务器为servlet的Tomcat的,该IDE是Netbeans的7.12。数据库池驱动是apache commons dbcp 1.4和apache commons pool 1.6 –

回答

1

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

我宁愿将驱动程序的jar到服务器的全局类路径,因为那里可以是将使用相同的.jar文件来加载驱动程序的多个应用程序。

+0

\ Matulionis我看到。你能给我一些关于如何在apache tomcat 7(在Netbeans 7.12中)做的提示吗? –

+0

Netbeans与此无关,将驱动程序的jar文件放入tomcat的库目录中。假设你已经在C:\ Servers \ tomcat-7中安装了tomcat。转到该目录并将相应的jar放入\ lib文件夹中。完整目录:C:\ Servers \ tomcat-7 \ lib。重新启动tomcat,你很好。 –

0

确保这个

1),你应该确保的.jar库compatabile与关系数据库管理系统使用的是
2)你包括在

projectproperties-->libraries 
在NetBeans连接的.jar

3)复制到的.jar
C:\Program Files\Apache Software Foundation\Apache Tomcat 6.0.26\lib
,如果你没有在禄司机这是很重要

你没有发现错误,但 你没有合适的,所以我认为该版本必须不兼容,所以你使用的是什么版本的SQL服务器...

+0

数据库在MS SQL Server 2008上运行。该jar是最近从MS网站下载的sqljdbc4.jar。库似乎在某些地方,尽管它似乎仍然不起作用。嗯 –

+0

我认为jar是兼容的,因为它运行在应用程序的Swing GUI版本中? –

+0

是的,你说得对。但是当你将jar添加到tomcat classpath时,你是否重新启动服务器? –