1

この小さなコードをコンパイルして、データベースに接続し、情報を取得してテストできるようにしています。Windows 7 x64 マシンで Netbeans を使用しています。これはコードです:

package passwordprotector;
import java.sql.*;

public class PasswordProtector {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    String host = "jdbc:derby://localhost:1527/PasswordProtector DB";
    String dbUsername = "john"; 
    String dbPassword = "arsenal";

    /*try{
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
    }catch(ClassNotFoundException e){
        System.out.println(e);
    }*/

    try{
        Connection con = DriverManager.getConnection(host, dbUsername, dbPassword);
        Statement stmt = con.createStatement();

        ResultSet rs = stmt.executeQuery("SELECT * FROM APP.PERSON");

        while (rs.next()) {
            String uName = rs.getString("uname");
            String uPass = rs.getString("upass");
            System.out.println("Username: " + uName + "/n" + "Password: " + uPass);
        }
    }catch(SQLException e){
        System.err.println(e);
    }
}
}

コンパイルして実行すると、次のエラーが表示されます。

java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/PasswordProtector DB
BUILD SUCCESSFUL (total time: 0 seconds)

データベースを右クリックしてプロパティを選択すると、次のように場所が表示されます。

Database URL: jdbc:derby://localhost:1527/PasswordProtector

これについて投稿した他の人に確認したところ、問題として間違った URL があったようですが、投稿されたもの以外に使用できる URL は見当たりません。

String ホストの末尾の 'DB' の有無にかかわらず試してみましたが、どちらも機能しません。

私もすでにここから読んでいますが、URlが間違っている理由をまだ理解できませんでした:

4

3 に答える 3

2

derbyrun.jar がクラスパスにあることを確認してください。これは、JDK の db/lib ディレクトリにあります。

于 2013-01-27T15:22:32.447 に答える
2

データベースの URL 接続に問題があるかどうかはわかりませんが、正しいドライバーの使用に問題があります。データベースが埋め込まれている場合は、投稿にコメントされているドライバーと私の回答の例を使用する必要があります。また、ダービーが埋め込まれたチュートリアルもあります。

そうでない場合は使用します

Class.forName("org.apache.derby.jdbc.ClientDriver");

スタンドアロンで実行されているデータベースに接続するのは別のドライバーです。この場合、derby ネットワーク クライアントのドキュメントで、derby ネットワーク クライアントを構成および実行する方法を参照してください。

于 2013-01-27T12:30:00.517 に答える
0

Maven と Derby をすばやく検索すると、pom に次のものが含まれます。

<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derbyclient</artifactId>
    <version>10.10.2.0</version>
</dependency>

その後、すべてが機能したため、以前の解決策が機能しなかった場合は、ライブラリ参照の問題である可能性があります。

于 2014-06-24T15:39:18.487 に答える