Pregunta

Soy un principiante con JDBC ... Tengo un problema al ejecutar este código:

Este código utiliza appache derby y con el fin de hacer que funcione por primera vez iniciado el servidor derby ..

      java -jar "C:\Program Files\Sun\JavaDB\lib\derbyrun.jar" server start

Y entonces comenzó el programa

      java -classpath derbyclient.jar -jar TestDB.jar

He establecido la ruta de clase           C: \ Archivos de programa \ Sun \ JavaDB \ lib \ derby.jar

Y siempre estoy conseguir que la excepción

java.sql.SQLException: No controlador adecuado encontrado para jdbc: derby: // localhost: 1527 / BookDB; crear = true         en java.sql.DriverManager.getConnection (DriverManager.java:602)         en java.sql.DriverManager.getConnection (DriverManager.java:185)         en TestDB.getConnection (TestDB.java:63)         en TestDB.runTest (TestDB.java:20)         en TestDB.main (TestDB.java:11)

import java.sql.*;
import java.io.*;
import java.util.*;


class TestDB
{
   public static void main(String args[])
   {
      try
      {
         runTest();
      }
      catch (SQLException ex)
      {
         for (Throwable t : ex)
            t.printStackTrace();
      }
      catch (IOException ex)
      {
         ex.printStackTrace();
      }
   }

   public static void runTest() throws SQLException, IOException
   {
      Connection conn = getConnection();
      try
      {
         Statement stat = conn.createStatement();

         stat.executeUpdate("CREATE TABLE Greetings (Message CHAR(20))");
         stat.executeUpdate("INSERT INTO Greetings VALUES ('Hello, World!')");

         ResultSet result = stat.executeQuery("SELECT * FROM Greetings");
         if (result.next())
            System.out.println(result.getString(1));
         result.close();
         stat.executeUpdate("DROP TABLE Greetings");
      }
      finally
      {
         conn.close();
      }
   }

   public static Connection getConnection() throws SQLException, IOException
   {
      Properties props = new Properties();
      FileInputStream in = new FileInputStream("database.properties");
      props.load(in);
      in.close();

      String drivers = props.getProperty("jdbc.drivers");
      if (drivers != null) System.setProperty("jdbc.drivers", drivers);
      String url = props.getProperty("jdbc.url");
      String username = props.getProperty("jdbc.username");
      String password = props.getProperty("jdbc.password");

      return DriverManager.getConnection(url, username, password);
   }
}
¿Fue útil?

Solución

Cuando se invoca el comando java con los parámetros -jar y -classpath, el parámetro -classpath se ignora. Consulte la documentación rel="noreferrer"> .

También se puede usar:

Unix / Linux:

java -classpath derbyclient.jar:TestDB.jar TestDB

Windows:

java -classpath derbyclient.jar;TestDB.jar TestDB

o hacer un manifiesto que añade derbyclient.jar a la ruta de clase.

Otros consejos

Cuando se utiliza -jar, -classpath se ignora. Desde el java docs herramienta de comando :

  

Cuando se utiliza esta opción, el archivo JAR   es la fuente de todas las clases de usuarios, y   otros valores de ruta de clase de usuario son   ignorado.

De cualquier uso -classpath sin -jar y especificar el tipo que contiene el método principal de forma explícita, o hacer su referencia archivo jAR se manifiestan el archivo jar derby.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top