2016-02-28 2 views
0

Я работаю на школьном проекте, и я должен подключиться к базе данных делается в SQL Anywhere 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 к классам),

javac -classpath ./sajdbc4.jar DbConnection.java 

Запуск программы Java с помощью следующей команды (sajdbc4.jar добавляется путь к классам),

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

в качестве альтернативы вы можете также добавить зависимость Maven, если вы используете Maven для создания проекта.

Смежные вопросы