-2

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

 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()

        + "')";
4

6 回答 6

6

直接的问题很可能是缺少引号。

更大的问题是您将数据直接包含在 SQL 中。您应该改用参数化 SQL(通过 a PreparedStatement),以避免 SQL 注入攻击,将代码 (SQL) 与数据(值)分开,并避免由于字符串转换而导致数据丢失。

于 2012-05-16T07:08:18.410 回答
4

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

正如其他答案指出的那样,我建议您查看PreparedStatement以避免可能的SQL 注入,并且PreparedStatement也将帮助您转义特殊字符,例如'避免 SQL 语法错误的字符。

访问保留字。

于 2012-05-16T07:21:08.797 回答
1

忘记单引号了?

" +txtid.getText()+ "
于 2012-05-16T07:02:08.850 回答
1

也许你需要一个空间"sale_Limit )""values"

于 2012-05-16T07:10:36.753 回答
-1

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

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

于 2012-05-16T07:07:36.257 回答
-1

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

+"sale_Limit ) "

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

"values ('" +txtid.getText()+ ",'"
于 2012-05-16T07:11:52.353 回答