2

私はjdbcの初心者です...このコードの実行に問題があります:

このコードはappachederbyを使用しており、それを機能させるために、最初にderbyサーバーを起動しました。

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

そして、プログラムを開始しました

      java -classpath derbyclient.jar -jar TestDB.jar

クラスパスC:\ Program Files \ Sun \ JavaDB \ lib\derby.jarを設定しました

そして、私は常にその例外を受け取っています

java.sql.SQLException:java.sql.DriverManager.getConnection(DriverManager.java:602)のjava.sql.DriverManager.getConnection()でjdbc:derby:// localhost:1527 / BOOKDB; create=trueに適したドライバーが見つかりませんDriverManager.java:185)at TestDB.getConnection(TestDB.java:63)at TestDB.runTest(TestDB.java:20)at 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);
   }
}
4

2 に答える 2

5

およびパラメーターを指定してjavaコマンドを呼び出すと、パラメーターは無視されます。Javaランチャーのドキュメントを参照してください。-jar-classpath-classpath

次のいずれかを使用できます。

Unix / Linux:

java -classpath derbyclient.jar:TestDB.jar TestDB

ウィンドウズ:

java -classpath derbyclient.jar;TestDB.jar TestDB

または、derbyclient.jarをクラスパスに追加するマニフェストを作成します。

于 2009-09-03T21:15:34.220 に答える
2

を使用する場合-jar-classpathは無視されます。javaコマンドツールのドキュメントから:

このオプションを使用すると、JARファイルがすべてのユーザークラスのソースになり、他のユーザークラスパス設定は無視されます。

-classpathなしで使用-jarし、mainメソッドを含むタイプを明示的に指定するか、jarファイルマニフェストにderbyjarファイルを参照させます。

于 2009-09-03T21:15:51.287 に答える