0

Java swing を使用してデータベース アプリケーションを作成しました。私のプログラムは、find クラスを呼び出すたびにデータベースからデータを取得します。find クラスは、単純にステートメントを作成し、現在のデータベース接続を取得して、ステートメントを実行します。データベースから返された値は ResultSet に配置され、jTable に表示されます。問題はこれです:

検索クラスを開くと、結果が表示されました。次に、SQLyog または HeidiSQL (データベースを操作するアプリケーション) に移動し、プログラムに表示された値を編集して保存します。プログラムに戻り、検索クラスを閉じてから再度開きましたが、編集されたデータではなく、以前のデータが引き続き取得されます。助けてください。検索クラスが開いたら、更新を表示する必要があります。更新されたデータを取得する唯一の方法は、プログラム全体を閉じてから再度開くことですが、これはやりたくありません。

編集:これは私が試したものです。基本的に、私のプログラムが初めてデータベースへの接続を作成したら、それを別のクラスに保存して、接続を常に開いています(私はそう思います)。したがって、クエリを作成するときはいつでも、クラスを呼び出して接続を取得します。ここで行ったことは、find クラスからクエリを実行した後、.close() 関数で接続を閉じることです。動作しますが、毎回接続を閉じる必要がありますか? 繰り返しますが、これは単なるデスクトップ アプリケーションであり、Web プログラムではありません。

4

2 に答える 2

1

トランザクションの分離に問題があると思います。一部のドライバーは、接続を取得するときに暗黙的なトランザクションを開始するため、その時点でデータベースのスナップショットが表示されます。おそらく、コミットされたすべてのトランザクションが適用されたデータベースを表示する READ COMMITTED レベルが必要です。

于 2012-11-08T02:52:12.033 に答える
0

編集をコミットしていないか、クエリを更新してデータを更新する必要があるようです。

于 2012-11-06T23:05:55.717 に答える