結果セットクローズエラー解決後の操作不可
これまで遭遇した限りでは、この問題が発生するケースは主に2つあり、1つはBaiduでリダイレクトされまくる回答です。
<スパン <スパン 使い分けではなく、rs is closed エラーが発生します。このエラーのコードは次のとおりです。
<スパン <スパン <スパン stmt=conn.createStatement()。
<スパン
<スパン
rs=stmt.executeQuery("select)
*
fromt1")となります。
<スパン
<スパン
rst=stmt.executeQuery("セレクト
*
をt2")から削除してください。
<スパン rs.last();// rst=stmt.executeQuery(sql_a); の実行で、rsはクローズアウトされます! ということで、ResultSetが閉じられたというメッセージを表示したまま、ここまで実行されます。
<スパン
<スパン
エラーメッセージは:java.sql.SQLException:Operationです。
ResultSetが閉じたrst.last()の後では、許可されません。
<スパン <スパン 正しいコードです。
<スパン <スパン <スパン stmt=conn.createStatement()。
<スパン
<スパン
rs=stmt.executeQuery("select)
* fromt1");
<スパン <スパン rs.last();// rsに対する操作をすぐに行い、操作後にデータベースからrstを取得し、rstに対する操作を行う必要があります。
<スパン
<スパン
rst=stmt.executeQuery("セレクト
* from t2");
<スパン <スパン rst.last()。
<スパン <スパン この意味はおそらく、同じ瞬間に各Statementオブジェクトは1つのResultSetオブジェクトしか開くことができず、プログラム実行時にrst=stmt.executeQuery(sql_a);rsはクローズアウトされる!ということでしょう。
<スパン <スパン 消しても操作すると、間違いなくエラーになります。解決策は、複数のResultSetオブジェクトを同時に開くのではなく、操作ごとに1つずつ開くことです。
<スパン <スパン というような問題もあります。
<スパン <スパン <スパン stmt=conn.createStatement()。
<スパン
<スパン
<スパン
sql=
SELECT LAST_INSERT_ID() from"+tableName;
<スパン
<スパン
<スパン
rs
=stmt.executeQuery(sql)を実行します。
<スパン <スパン while(rs.next()){。 <未定義
<スパン
<スパン
<スパン
= "update "+tableName+" set notifyURL='"+URLUtil.getRequestServerContext(request) +"/NotifyAction?id="+rs .getInt(1)+"' where id ="+rs .getInt(1).id='quot'とします。
<スパン <スパン }
<スパン <スパン 現在インターネット上では、whileループの外でrsを閉じるなど、喝采を浴びる方法がたくさんありますが、これでは問題が解決しません。問題はrsを閉じるタイミングがおかしいのではなく
<スパン <スパン execute操作を実行するたびに、rsは自動的にクローズされます。すでに閉じた rs に対して next を実行するのは明らかに間違っています。解決策は、whileループに次の文を追加することです。
<スパン <スパン <スパン コード
<スパン <スパン <スパン stmt=conn.createStatement()。
<スパン
<スパン
stmtが使用されるたびに、新しいStatementオブジェクトを作成します。こうすることで、rsを何度も使用することがなくなります。
関連
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
javaの非静的メソッドを静的に参照することができない
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
FindBugの使用概要
-
CertificateException: XXXに一致するサブジェクトの代替DNS名が見つかりません 解決策
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
Java:未解決コンパイル問題の解決方法
-
swagger2 モデルが表示されない モデルが見つからない @ApiModel アノテーションが表示されない問題
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipseは、ポップアップA Java Exception has occurred.を実行し、エラーException in threadの解決策を報告します。
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
Java の switch case 文で必要な定数式の問題の解決法
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
BindException: アドレスはすでに使用中です:バインドエラー解決
-
ジャバアレイ
-
Java Runtime Environmentを継続するためのメモリが不足しています。
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
FTPサーバ機能のJava実装
-
javaの継承の基本的な実装