0

Netbeans 7.2.1 にデータベースが組み込まれた Java アプリケーションを構築しています。今のところ、次のコードを使用して derby データベースとの接続を確立できます。

Connection con = DriverManager.getConnection(
                     "jdbc:derby:database;create=true",
                     uName,
                     uPass);

ただし、データベースのテーブルに対してクエリを実行できません。いくつかの調査の後、次のコードを実行しようとしましたが、成功しませんでした。

Statement stmt = con.createStatement();

ResultSet rs;
rs = stmt.executeQuery("SELECT descricao FROM fichas");

while (rs.next()) {
    String s = rs.getString("descricao"); 
    System.out.println(s);
}

ここで 2 つの問題があります。まず、検索に基づいて、上記の例のように Statement stmt を使用する必要がありますが、netbeans でエラーが発生します。彼に続くメソッド「stmt.executeQuery()」を実行できるようにするには、ステートメントを次のように定義する必要があります。

java.sql.Statement stmt = con.createStatement();

このように使用しないと、「executeQuery」メソッドを選択できません。第二に、これを使用してもクエリは実行されません。コンソールに次のエラーが表示されます。

java.sql.SQLSyntaxErrorException: スキーマ 'ADMIN_DATABASE' が存在しません

これを解決する方法のヒントはありますか? ありがとうございました!

新しいアップデート:

私はいくつかのテストを実行していましたが、ここにいくつかの新しい結論があります。netbeans のサービス パネルからテーブルを作成する代わりに、次のコードを実行します。

stmt.execute("create table test_table (name varchar(128))");

できます。テーブルが作成され、再試行すると、テーブルが既に存在するという予想されるエラーが発生します。ただし、サービスパネルを見て、アプリに埋め込まれたダービーデータベースにアクセスすると、この「テストテーブル」が他のものと一緒にありません。

それに加えて、そのテーブルで選択を実行してもスキーマエラーは発生しませんが、サービスパネルで手動で作成した他のテーブルでは引き続きエラーが発生します。

それで、誰が違いが何であるか説明できますか?test_table私が作成したものはどこに行きますか? この作成モードと derby でテーブルを作成するモードの違いは何ですか? スキーマ エラーが表示されるのはなぜですか?

たくさんの質問をして申し訳ありませんが、今はとても混乱しています。ありがとうございました!

4

2 に答える 2

1

netbeans のサービス パネルのデータベースは、別の JVM で実行されており、Derby のネットワーク インスタンスです。使用した URL でデータベースに接続すると、jdbc:derby:database;create=trueJVM に組み込みデータベースが作成され、このデータベースは空になります。

サービス パネルでデータベースに接続するには、適切な接続 URL を使用しますjdbc:derby://localhost:1527/DATABASE_NAME(詳細はこちら.

于 2012-11-07T12:55:07.693 に答える