- PR -

JSPで検索結果を表示する方法

投稿者投稿内容
ひびき
会議室デビュー日: 2004/11/09
投稿数: 18
投稿日時: 2004-11-15 12:27
raystarさん、返信ありがとうございます。

public Vector doSelect(String query) {
if ( mConnection == null ){
return null;
}

try {
// ステートメントの作成
Statement stmt = mConnection.createStatement();
// 問い合わせの実行
ResultSet rset = stmt.executeQuery(query) ;

// 結果を返す
return resultsetVector(rset);

} catch ( SQLException e ) {
System.out.println("エラー:" + e);
e.printStackTrace();
}
return null;
}

-----------------------------------------------------

private Vector resultsetVector(ResultSet rset) {
if ( mConnection == null ){
return null;
}

Vector v = new Vector();

try {
ResultSetMetaData meta = rset.getMetaData();
int cols = meta.getColumnCount();
while ( rset.next() ) {
Hashtable hash = new Hashtable();
for(int i=1; i <= cols; i++) {
if (rset.getObject(i) == null){
hash.put(meta.getColumnName(i), " ");
}
else{
hash.put(meta.getColumnName(i), rset.getObject(i));
}
}

v.add(hash);
}
}
catch ( Exception e) {
System.out.println("エラー:" + e);
e.printStackTrace();
}
return v;
}

のように、doSelectでSQLを実行し、resultsetVectorからVector型の結果を受け取ってJSPのresultに返すようにしています。
これではresultに結果は入らないでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-11-15 12:30
>これではresultに結果は入らないでしょうか?
やってみたらどうなりました?
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2004-11-15 12:36
引用:

return v;



これ戻していますけど、本当にうけとっていますか?
ソースを見た限りでは、1つのオブジェクトをつくるために、
複数のメソッドを経由していますね。

どこで、予期せぬ結果になるのか、切り分けてみたらいかがでしょうか。

簡単な方法として System.out.println をいれてみたり、
アサートつかってみたり・・・・など。
影フリー
常連さん
会議室デビュー日: 2004/11/12
投稿数: 39
お住まい・勤務地: 東京都
投稿日時: 2004-11-15 12:41
上のソースを見た限りではNULLがreturnされるところはここしかありません。
if ( mConnection == null ){
return null;
}
mConnectionはどこでインスタンスをゲットするんですか?きっとそこで
失敗したそうです。
ひびき
会議室デビュー日: 2004/11/09
投稿数: 18
投稿日時: 2004-11-15 14:04
インギさん、raystarさん、影フリーさん、返信ありがとうございます。

色々切り分けて確認していったところ、プロパティファイルから値を呼び出せていないようで、mConnectionのところで失敗していました。

kouzoubean.getResult()メソッドで、下記のようにプロパティファイルから値をとってくるようにしているのですが、JSPから起動する際は、別の方法にしなければいけないのでしょうか。
プロパティファイルはクラスファイルと同じschemaSearchパッケージの中に入れてあります。


// 接続先のurl,user,passwordの読み込み
try {
Properties prop = new Properties();
// ファイルのロード
prop.load(new FileInputStream("schemaSearch/setuzoku.properties"));
// 値の読み込み
driver = prop.getProperty("setuzoku.driver");
url = prop.getProperty("TUNE1.url");
user = prop.getProperty("TUNE1.user");
password = prop.getProperty("TUNE1.password");

} catch (Exception e) {
e.printStackTrace();
}
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-11-15 14:14
「JSPで検索結果を表示する方法」とはすでに話題が異なっているような・・・。
芋づる式に質問をしないで、まず切り分けていってはいかがでしょうか?
新しく疑問ができてわからないようであれば焦点を明確にするため新しいスレッドとして起こした方がわかりやすいと思います。
影フリー
常連さん
会議室デビュー日: 2004/11/12
投稿数: 39
お住まい・勤務地: 東京都
投稿日時: 2004-11-15 14:15
サブレットを作るしか有りません。
web.xmlの中に以下を設定してください。
---------------------------------
<servlet>
<servlet-name>Start</servlet-name>
<servlet-class>yourpackage.Start</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
----------------------------------
そうするとウェブサーバを起動したらStartサブレットが自動起動します。

Star.javaソースは以下のとおりです。
-----------------------------------------------------
package yourpackage

public class Start extends HttpServlet {
public void init (ServletConfig config) throws ServletException {
super.init(config);
try {
Properties prop = new Properties();
// ファイルのロード
prop.load(new FileInputStream("schemaSearch/setuzoku.properties"));
// 値の読み込み
driver = prop.getProperty("setuzoku.driver");
url = prop.getProperty("TUNE1.url");
user = prop.getProperty("TUNE1.user");
password = prop.getProperty("TUNE1.password");
} catch (Exception e) {
e.printStackTrace();
}
}
--------------------------------------------------------
ここで取得した情報はメモリ上のとこか(publicクラスまたは変数)で保存して使ってください。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-11-15 14:20
であれば、ResourceBundleを使うのがいいのではないですか?

ResourceBundle resources = ResourceBundle.getBundle("schemaSearch/setuzoku");
driver = resources.getString("setuzoku.driver");



[ メッセージ編集済み 編集者: uk 編集日時 2004-11-15 14:21 ]

スキルアップ/キャリアアップ(JOB@IT)