2016-02-28 101 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程序。