• 締切済み

サーブレット:SQL検索結果に同じキーのデータが入ってくる

はじめまして。 JAVA初心者です、以下のような現象が出て困っています。 教えていただきたいのですが。。。 【システムの動き】 HTMLフォームからデータを選択し、SQLで選択フラグを立て、 SQLから選択フラグの立ったデータをサーバにテキスト出力します。   [検索]ボタンクリック     ↓(サーブレットA呼出し)   検索結果表示(html)     ↓出力データを選択   [出力]ボタンクリック     ↓(サーブレットB呼出し)     ↓(テキストファイル出力。SQLのSELECT件数だけの行を出力)   出力完了メッセージ表示 【現象】 テキストの出力結果をみると、 全く内容の同じ行が何行かにまたがって存在しています。 SQLにはキーが存在しているので同じ行があるのは 有り得ないのですが。。。 ------------------------------- JAVAプログラムの組み方なのか、サーバのシステム構築なのか、 原因の切り分けが出来なくて困っています。 ちなみに、あるサーバではこの現象が出るのに、他のサーバでは全く 現象が出てきません。 「SingelThreadModel」をプログラムに書いていますが。。。 あまり推奨されていないのですよね?(>_<) 初心者なので、トンチンカンな質問をしているかもしれませんが、 よろしくお願い致します。

みんなの回答

回答No.2

う~ん。 サーブレットAではどのように結果を保持しているのか? サーブレットAから検索結果表示(html)にどうやって結果を渡しているのか? 検索結果表示(html)からサーブレットBにどうやって結果を渡しているのか? サーブレットBではどうやってテキストに出力しているのか? が気になりますねぇ。 SingleThreadModelについて、ちょっと調べてみましたが、 (今回に限っては)特に問題ないように思えます…。 >2.について >同じDBを使ってもテキスト出力の結果が処理するサーバによって異なります。 2.では、 「あるサーバ」と「他のサーバ」の比較ではなく、 「あるサーバのサーブレットBでのテキスト出力の結果」 と 「コマンドライン等からサーブレットAで実行するSQLと同じSQLコマンドを直接実行した結果」 の比較だったのですが…。(^^;A あまりお力になれてなくて申し訳ありません。m(_ _)m 前回の内容に誤字がありました。 ×超副業 ○重複行

回答No.1

以下を確認されてはどうでしょうか? 1.  プライマリーキーが2つ以上ありませんか?  PK1,PK2,…   A, a,…   A, b,…  (PK1とPK2はともにプライマリーキー)  上記の場合は、同じ行にはならない。 2.  テキストの出力結果と、SQLを直接実行した場合とでは、  結果が同じですか?  SQLを直接実行した場合には重複行がなく、  テキストの出力結果には超副業がある場合は、  Javaのテキスト出力の箇所に問題があると思います。 3.  >ちなみに、あるサーバではこの現象が出るのに、他のサーバでは全く  >現象が出てきません。  とありますが、「あるサーバ」と「他のサーバ」の  ・DBの中身(テーブル定義、格納されているデータ)  ・実行する条件など  は全て同じでしょうか?

an_donuts
質問者

補足

回答ありがとうございます。 1.について プライマリーキーは1つです。 2.について 同じDBを使ってもテキスト出力の結果が処理するサーバによって異なります。 シングルスレッド処理になっていないのかなぁ?と悩んでいます。 やはりテキスト出力処理のコーディングに問題あるかもしれないですね。。。 3.について DBの中身はDBのファイル(*.LDF,*.MDF)をコピーしているので DB構成、データは全く同じです。 以上、よろしくお願い致します。

関連するQ&A