2012-06-10 85 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時,你是否重新啓動服務器? –