2016-02-28 103 views
0

我工作的一所學校的項目,我必須連接到SQL中的任何地方做17數據庫中,我不斷收到錯誤流動:的Java連接到SQL Anywhere 17

No suitable driver found for jdbc:sqlanywhere:Tds:localhost:2638?eng="DBNAME".

任何幫助是值得歡迎的。

以下是進行連接的類的代碼。

package model; 

import java.sql.*; 

public class DBConnection { 

    public class ConnectionHandler { 
     ResultSet r; 
     Statement s; 
     String returnStatus; 
    } 

    private String db, user, passwd; 
    private String dbUrl; 
    private Connection conn; 

    public DBConnection(String db, String user, String passwd, Object openserver, String databasepath) { 
     this.db = db; 
     this.user = user; 
     this.passwd = passwd; 

     dbUrl = "jdbc:sqlanywhere:Tds:localhost:2638?eng=" + db; 

     try { 
      conn = DriverManager.getConnection(dbUrl, user, passwd); 
      conn.setAutoCommit(false); 
     } catch (Exception e) { 
      System.out.println(e); 
      Boolean openServer = (Boolean) openserver; 
      if (openServer.booleanValue()) 
       try { 
        String engcommand = "dbeng12 " + databasepath + db + ".db"; 
        Runtime.getRuntime().exec(engcommand); 
        long t0, t1; 
        t0 = System.currentTimeMillis(); 
        do { 
         t1 = System.currentTimeMillis(); 
        } while (t1 - t0 < 5000); 
        conn = DriverManager.getConnection(dbUrl, user, passwd); 
        conn.setAutoCommit(false); 
       } catch (Exception ex) { 
        System.out.println("Unable to start server. " + ex); 
       } 
     } 
    } 

    public void updateStatement(String sql, ConnectionHandler ch) { 
     Integer result = new Integer(0); 
     String message = null; 

     if (sql.trim().substring(0, 1).equalsIgnoreCase("U")) 
      message = "Number of rows updated: "; 
     else if (sql.trim().substring(0, 1).equalsIgnoreCase("I")) 
      message = "Number of rows inserted: "; 
     else 
      message = " "; 

     try { 
      ch.s = conn.createStatement(); 
      result = new Integer(ch.s.executeUpdate(sql)); 
      ch.returnStatus = message + result; 
     } catch (Exception e) { 
      System.out.println("Unable to execute the insert/update/delete statement. " + e); 
      ch.returnStatus = "Error:" + e.toString(); 
     } 
    } 

    public void returnResultSetSelectStatement(String sql, int resultsetType, ConnectionHandler ch) { 
     ch.r = null; 
     try { 
      if (resultsetType == 1) 
       ch.s = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); 
      else 
       ch.s = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); 
      ch.r = ch.s.executeQuery(sql); 

     } catch (Exception e) { 
      ch.returnStatus = e.toString(); 
      System.out.println("Unable to execute the returnSelectStatement. " + e); 
     } 
    } 

} 

回答

1

您需要將sajdbc4.jar添加到程序的類路徑中。如果您使用IDE(如NetBeans或Eclipse),則可以將sajdbc4.jar作爲依賴庫添加,NetBeans/Eclipse將自動將其添加到類路徑中。

如果您從命令行運行上面的程序,複製sajdbc4.jar到上述Java程序被定位然後使用以下命令編譯文件的文件夾(這增加sajdbc4.jar到classpath中),

javac -classpath ./sajdbc4.jar DbConnection.java 

使用以下命令(sajdbc4.jar添加到classpath中),

java -classpath "./sajdbc4.jar;." DbConnection 

另外,您還可以添加Maven的依賴,如果您正在使用Maven來構建項目運行的Java程序。