- PR -

動的にとは?

1
投稿者投稿内容
スライストーン
会議室デビュー日: 2005/05/25
投稿数: 6
投稿日時: 2005-05-25 13:08
はじめまして、宜しくお願いします。
現在JSPのフォームからパラメータ(例えばチェックボックスのvalue値)を受け取って、その個数分UPDATEを行うといった処理をしています。その際パラメータの個数を
カウントし、
UPDATE テーブル名 SET=カラム名(個数分)
として動的にSQL文を発行しているのですが、当然送られるパラメータに相当するテーブルのカラム名も変化してしるためとても苦労しています。
どのようにソースを作成すればよいのでしょうか?
ちなみにパラメータのvalue値にはカラム名と結びつける文字列を設定してはいますが・・。
Hyde
ベテラン
会議室デビュー日: 2005/05/18
投稿数: 63
投稿日時: 2005-05-25 13:47
まあ、対応するJSPのパラメータクラスってあると思うんですが、そこで編集処理ができるような仕組みを作ったほうが楽かと思いますよ。いくらでもやり方はあると思いますが、結局テーブルごとのカラム名をいちいち設定したりNULL判定するのが面倒であれば、インデックスでアクセスできるアクセッサがいいのではないかと思います。。。

こんな感じではどうですか?

public String getSqlForUpadate(){
StringBuffer buf = new StringBuffer();
String[] fieldname = {"XXID","XXNAME","XXCOMMENT"};
int filednum = 10;
for(int i = 0 ; i < filednum ; i++){
if( getParam(i) == null || "".equals(getParam(i)) ){

}else{
buf.append(fieldname[i] + " = " + getParam(i) + ",");
}
}
String tmp = buf.toString();
return "UPDATE TMP_TABLE SET " + tmp.substring(0,tmp.length()-1);

}
public String getParam(int index){
String strRet = "";
switch(index){
case 0:strRet = getParam("XXID");break;
case 1:strRet = getParam("XXNAME");break;
case 2:strRet = getParam("XXCOMMENT");break;
default:break;
}
return strRet;
}


/**
* @param string
* @return
*/
private String getParam(String key) {
// TODO 自動生成されたメソッド・スタブ
return (String)hm.get(key);
}

みたいな。。。
スライストーン
会議室デビュー日: 2005/05/25
投稿数: 6
投稿日時: 2005-05-26 23:52
なるほど・・。レス有難うございました。
ベタなやり方(泥臭い)をとっていたのでかなりこれは参考になります。
1

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