2

私の質問が些細なことなら申し訳ありませんが、私はJavaプログラミングに不慣れです。

次の問題があります。NetBeansIDEを使用してderbyデータベースを作成しました(「サービス」タブ->「JavaDB」->「データベースの作成」に移動しました)。次に、Javaプロジェクトを作成し、derbyclient.jarへの参照を追加しました。これらの引数の使用:

String host = "jdbc:derby://localhost:1527/Employees";
String username = "jarek";
String pass = "aaa";

なんとかjdbcConnectionを作成し、ResultSetにテーブルEmployeesからのデータを取り込むことができました。次に、この結果セットを使用してデータベースを更新したかったので、次のように記述しました。

rs.absolute(rowtoupdate);
rs.updateObject("FIRST_NAME", updatedvalue);
rs.updateRow();

そして、すべてが正常に機能しました(データは実際にデータベースで更新されました)。

今私の問題に。このデータベースをアプリケーションに埋め込みたいので、そのファイルをプロジェクトの場所にあるフォレダー「DB」にコピーしました(Employeesフォルダーとderby.logおよびderby.propertiesをコピーしました)。プロジェクトjarファイルで参照されているものをderbyclient.jarからderby.jarに変更しました。その後、私はさまざまな引数を使用しました:

String host = "jdbc:derby:DB//Employees";
String username = "jarek";
String pass = "aaa";
String driver = "org.apache.derby.jdbc.EmbeddedDriver";
Class.forName( driver );
connection = DriverManager.getConnection( url, username, password );

ここでも、resultSetにデータベースからのデータを入力することができました(すべてが機能しているように見えます)が、まったく同じ更新を実行しようとすると、次のようになります。

rs.absolute(rowtoupdate);
rs.updateObject("FIRST_NAME", updatedvalue);
rs.updateRow();

変更はデータベースに保持されません。

私は何が間違っているのですか?データベースファイルをプロジェクトの場所にコピーしたことが原因でしょうか?しかし、Statementでクエリを実行した後のresultSetには、データベースからの適切なデータが含まれているため、機能しているようです...

4

1 に答える 1

2

connection.commit()を呼び出すと、問題が解決します。

于 2013-01-12T07:33:40.890 に答える