Sql INSERT into Statement错误

时间:2012-05-16 06:59:19

标签: java sql database

请帮我找到语法错​​误,我尽力指出但不能。

 String sql= "insert into ctable ("

        +"id,"
        +"name,"
        +"address,"
        +"phone,"
        +"email,"
        +"sale_Limit )"

        + "values (" +txtid.getText()+ ",'" +txtname.getText()+ "','" +txtaddress.getText()

        +"','" + txtphone.getText()+ "','"+ txtemail.getText()+ "','"+txtsaleLimit.getText()

        + "')";

6 个答案:

答案 0 :(得分:6)

立即问题可能会丢失引号。

更大的问题是您直接在SQL中包含数据。您应该使用参数化SQL(通过PreparedStatement),avoid SQL injection attacks,从数据(值)中分离代码(SQL),并避免因字符串转换而导致数据丢失。

答案 1 :(得分:4)

name是Access中的保留字,因此您应该将列名更改为其他人。

正如其他答案所指出的那样,我建议您调查PreparedStatement以避免可能的SQL Injection,而PreparedStatement也会帮助您逃避特殊字符,例如' char中避免SQL语法错误。

Access reserved words.

答案 2 :(得分:1)

忘记单引号?

" +txtid.getText()+ "

答案 3 :(得分:1)

您可能需要"sale_Limit )""values"

之间的空格

答案 4 :(得分:-1)

INSERT INTO table_name(field1,field2,... fieldN)                        VALUES                        (value1,value2,... valueN);

从字段名称部分删除引号和附加符号。

答案 5 :(得分:-1)

+“sale_Limit)” - 应该是空格,改为:

+"sale_Limit ) "

“values(”+ txtid.getText()+“,'” - 缺少引号,更改为:

"values ('" +txtid.getText()+ ",'"