INSERT sql语句结合SELECT和WHERE

时间:2013-01-29 08:25:41

标签: java sql ms-access-2010

我试图将这些值插入数据库,但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;
}

1 个答案:

答案 0 :(得分:3)

如果您使用INSERT INTO...SELECT语句,则不应该有VALUES个关键字,因为要插入的值来自SELECT语句。例如

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

对您的查询进行参数化