電子書籍の厳選無料作品が豊富!

更新処理についてなのですが、現状では更新したい項目だけを入力すると入力されなかった項目にはデフォルトの値が上書きされてしまいます。
値が入力されたところだけを更新をかけるようにするにはどのように書き換えればいいでしょうか?
よろしくお願いします。
// 更新処理
public void updateDatas(String getUserNo, String getUserId, String getPasswd, String getName, String getAccessFlg){
this.userNo=getUserNo; this.userId=getUserId; this.passwd=getPasswd; this.name=getName; this.accessFlg=getAccessFlg;
jdbcOpen();
try{
// SQL文生成(更新)
query = "UPDATE loginuser SET userId = '"+userId+"', passwd = '"+passwd+"', name = '"+name+"', accessFlg = '"+accessFlg+"' where userNo ="+userNo;
System.out.println("UPDATE query"+query);
// 実行
int flgUpdated = stmt.executeUpdate(query);
} catch (Exception ex) { ex.printStackTrace ();}
jdbcClose();
}

A 回答 (2件)

とりあえず、配列に入れて、4回のif文をループで回すようにしてみました。


このままではSQLインジェクション対策してないので、そこはまた勉強して対策とって下さい。
// SQL文生成(更新)
String[] columAry = {"userId", "passwd", "name", "accessFlg"};
String[] dataAry = { userId, passwd, name, accessFlg};
String query= "UPDATE loginuser SET ";
int data_flag = 0;
for(int i=0; i<columAry.length; i++ ){
if(! "".equals(dataAry[i]) ){
if(data_flag>0){
query += ", ";
}
query += columAry[i] + "='" + dataAry[i] + "' ";
}
}
query += " where userNo ="+userNo;
    • good
    • 0

値が入力されたところだけを更新をかけるようなSQL文にすればよいでしょう。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!