3

netbeans を使用して組み込みデータベースを作成し、それにデータを追加しました。データベースにクエリを実行したいので、コードはスムーズに実行されますが、データは表示されません。これが私のコードです:

import java.sql.*;
public class EmbeddedDB 
{  

public static void main(String[] args)
{
    Connection con = null;
    Statement st = null;
    ResultSet rs = null;
    try
    {
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        con = DriverManager.getConnection("jdbc:derby:CustDB;create=true", "app", "app");
        System.out.println("connected");
        st = con.createStatement();
        System.out.println("statement created");

        rs = st.executeQuery("select * from APP.TABLEX");
        System.out.println("retrieving ...");
        System.out.println(rs.getString(1));

    }
    catch(ClassNotFoundException | SQLException c)
    {
    }
}
}

それで、何が問題になるのでしょうか?データベースは埋め込みモードで作成されました。

4

2 に答える 2

2

前の回答に重要な説明を追加したいと思います。これを機能させるために何時間もかけて少し迷ったからです。私の要点は、Netbeans サービス タブが組み込みの derby データベースでどのように機能するかを理解することです。使用時:

 con = DriverManager.getConnection("jdbc:derby:CustDB;create=true", "app", "app");

netbeans プロジェクトと同じディレクトリにデータベースを作成します。ディレクトリ パスを追加することで、この動作を変更できます。

jdbc:derby:directory_path/CustDB;create=true 

したがって、プログラムを実行すると、指定したパスにデータベースが作成されます。

現在、サービス タブで埋め込みデータベースへの接続を作成する場合は、既存のデータベースに接続するか、新しいデータベースを作成しています。Green の例を使用します。

最初の投稿のコードを初めて実行すると、

jdbc:derby:CustDB;create=true

プロジェクトのディレクトリ パスにデータベースを作成します。[サービス] タブからこのデータベースの編集を使用できるようにするには、組み込みデータベースへの新しい接続を作成する必要があります。CustDB という名前、同じユーザー アプリ、同じパスワード アプリを使用する必要があります。

ここで非常に重要なことは、URL でプロジェクトのディレクトリ パスを使用することです。そのため、ウィンドウで URL フィールドに接続を作成するときに次を使用する必要があります。

jdbc:derby:directory_path_of_the_project/CustDB;

テスト接続ボタンを押すと、すべて問題ありません。

プロジェクトのディレクトリ パスを使用せずにここcreate=trueで使用すると、別の場所に同じ名前、同じユーザー、およびパスワードを持つ別のデータベースが作成されます。後で、コードでデータベースに変更を加えても、サービス タブのデータベースに表示されないことに気付くでしょう。

于 2015-01-21T19:48:08.020 に答える