- 締切済み
サーブレット:SQL検索結果に同じキーのデータが入ってくる
はじめまして。 JAVA初心者です、以下のような現象が出て困っています。 教えていただきたいのですが。。。 【システムの動き】 HTMLフォームからデータを選択し、SQLで選択フラグを立て、 SQLから選択フラグの立ったデータをサーバにテキスト出力します。 [検索]ボタンクリック ↓(サーブレットA呼出し) 検索結果表示(html) ↓出力データを選択 [出力]ボタンクリック ↓(サーブレットB呼出し) ↓(テキストファイル出力。SQLのSELECT件数だけの行を出力) 出力完了メッセージ表示 【現象】 テキストの出力結果をみると、 全く内容の同じ行が何行かにまたがって存在しています。 SQLにはキーが存在しているので同じ行があるのは 有り得ないのですが。。。 ------------------------------- JAVAプログラムの組み方なのか、サーバのシステム構築なのか、 原因の切り分けが出来なくて困っています。 ちなみに、あるサーバではこの現象が出るのに、他のサーバでは全く 現象が出てきません。 「SingelThreadModel」をプログラムに書いていますが。。。 あまり推奨されていないのですよね?(>_<) 初心者なので、トンチンカンな質問をしているかもしれませんが、 よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- pcbeginner
- ベストアンサー率46% (261/560)
う~ん。 サーブレットAではどのように結果を保持しているのか? サーブレットAから検索結果表示(html)にどうやって結果を渡しているのか? 検索結果表示(html)からサーブレットBにどうやって結果を渡しているのか? サーブレットBではどうやってテキストに出力しているのか? が気になりますねぇ。 SingleThreadModelについて、ちょっと調べてみましたが、 (今回に限っては)特に問題ないように思えます…。 >2.について >同じDBを使ってもテキスト出力の結果が処理するサーバによって異なります。 2.では、 「あるサーバ」と「他のサーバ」の比較ではなく、 「あるサーバのサーブレットBでのテキスト出力の結果」 と 「コマンドライン等からサーブレットAで実行するSQLと同じSQLコマンドを直接実行した結果」 の比較だったのですが…。(^^;A あまりお力になれてなくて申し訳ありません。m(_ _)m 前回の内容に誤字がありました。 ×超副業 ○重複行
- pcbeginner
- ベストアンサー率46% (261/560)
以下を確認されてはどうでしょうか? 1. プライマリーキーが2つ以上ありませんか? PK1,PK2,… A, a,… A, b,… (PK1とPK2はともにプライマリーキー) 上記の場合は、同じ行にはならない。 2. テキストの出力結果と、SQLを直接実行した場合とでは、 結果が同じですか? SQLを直接実行した場合には重複行がなく、 テキストの出力結果には超副業がある場合は、 Javaのテキスト出力の箇所に問題があると思います。 3. >ちなみに、あるサーバではこの現象が出るのに、他のサーバでは全く >現象が出てきません。 とありますが、「あるサーバ」と「他のサーバ」の ・DBの中身(テーブル定義、格納されているデータ) ・実行する条件など は全て同じでしょうか?
補足
回答ありがとうございます。 1.について プライマリーキーは1つです。 2.について 同じDBを使ってもテキスト出力の結果が処理するサーバによって異なります。 シングルスレッド処理になっていないのかなぁ?と悩んでいます。 やはりテキスト出力処理のコーディングに問題あるかもしれないですね。。。 3.について DBの中身はDBのファイル(*.LDF,*.MDF)をコピーしているので DB構成、データは全く同じです。 以上、よろしくお願い致します。