15

src ディレクトリ (Java、Eclipse) に h2-database ファイルがあります: h2test.db

問題:

  • コマンド ラインから h2.jar を起動し (ポート 8082 で h2 ブラウザ インターフェイスを起動)、h2test.db に 'test1' と 'test2' の 2 つのテーブルを作成し、それらにいくつかのデータを入れました。

  • Java コード (JDBC) からそれらにアクセスしようとすると、「テーブルが見つからない例外」がスローされます。Java コードからの「テーブルの表示」は、0 行の結果セットを示します。

  • また、Java コード (CREATE TABLE ... など) から新しいテーブル ('newtest') を作成する場合、後で h2.jar ブラウザー インターフェイスを起動すると、それが表示されません。他の 2 つのテーブル (「test1」と「test2」) だけが表示されます (ただし、新しく作成されたテーブル「newtest」には Java コードからアクセスできます)。

私は組み込みデータベースの経験がありません。ここで根本的に間違ったことをしていると思います。私の仮定は、同じファイルにアクセスしているということです.1回はJavaアプリから、もう1回はh2コンソールブラウザインターフェースからです。私はそれを理解できないようです、ここで何が間違っていますか?

編集: 要求に応じて、いくつかのコードを追加します:

Java コード:

Class.forName("org.h2.Driver");
String url = "jdbc:h2:" + "db/h2test.db";
String user = "aeter"; 
String password = "aeter"; 
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement ps2 = conn.prepareStatement("Show tables;");
ResultSet rs = ps2.executeQuery();

この結果セットには、2 つのテーブルが表示されるのではなく、0 行 (テーブルなし) があります。

H2 コンソール - ブラウザー インターフェースの設定:

設定: Generic h2(embedded)
ドライバークラス: org.h2.Driver
JDBC URL: jdbc:h2:../../workspace/project_name/src/db/h2test.db
ユーザー名: aeter
パスワード: aeter

EDIT2: データベースを新しいフォルダーにコピーしました。新しいフォルダの db ファイルは、'newtest' テーブル (Java コードから) と 'test1' および 'test2' テーブル (コンソール ブラウザ h2 インターフェイスから) で表示されます - 古い db とまったく同じ方法ファイルが表示されました。そのため、問題は db ファイルのコピーで解決しません。

4

4 に答える 4

15

埋め込みモードの場合は、パスを確認する必要があります。たとえば、ホーム ディレクトリからの相対パスを使用します。

"jdbc:h2:file:~/db/h2test.db"

念のため、フル パスを使用します。

"jdbc:h2:file:/users/aeter/db/h2test.db"

便宜上、;IFEXISTS=TRUE誤ったデータベース ファイルを作成しないように追加します。

詳細については、JDBC を使用したデータベースへの接続を参照してください。

H2サーバーの URL は、 へ-baseDirのパラメータとして指定されたに対して相対的main()です。

于 2010-03-14T20:39:54.703 に答える
1

Hibernate を使用している場合は、hibernate.cfg.xml ファイルでこれを試してください。

<property name="connection.url">jdbc:h2:file:db/h2test</property>

末尾に *.db 拡張子なし

于 2015-06-18T17:52:46.613 に答える
1

また、あなたはこれを好きにすることができます

"jdbc:h2:file:db/h2test.db"

次に、Javaはプロジェクトフォルダーからdbフォルダーを探します

->projectName // project folder
-->src        // src folder
-->db         // here your database folder
-->....
于 2014-11-27T14:57:16.687 に答える