2

これらの値をデータベースに挿入しようとしていますが、INSERT句とWHILE句に互換性がありません。誰かが私が別の方法で私の望ましい結果を達成する方法について何か考えを持っていますか?

public boolean updateAns()
{
    boolean success=true;
    DBController db=new DBController();
    db.setUp("IT Innovation Project");
    String sql="INSERT INTO kioskSurveyAns(survey_qn1,survey_qn2,survey_qn3) VALUES('"+radioText+"','"+radioText1+"','"+radioText2+"')SELECT survey_qn1,survey_qn2,survey3 FROM kioskSurveyAns WHERE survey_nric='"+nric+"'";

    if (db.updateRequest(sql) == 1)
    success = true;
    db.terminate();
    return success;
}
4

1 に答える 1

3

ステートメントを使用している場合、挿入される値はステートメントからのものであるため、キーワードは含まれていINSERT INTO...SELECTません。例えばVALUESSELECT

INSERT INTO tableName (col1, col2)
SELECT col1, col2
FROM tableX
WHERE....

しかし、クエリを振り返ると、コントロールの値に基づいて行を更新する必要があります。右?

UPDATE kioskSurveyAns
SET    survey_qn1 = 'rad1',
       survey_qn2 = 'rad2',
       survey_qn3 = 'rad3'
WHERE  survey_nric= = 'richere'

補足として、ステートメントは。で脆弱ですSQL Injection。を使用してクエリをパラメータ化してくださいPreparedStatements

于 2013-01-29T08:27:29.910 に答える