java - 执行 PreparedStatement 时得到 "jdbc.SQLServerException: Incorrect syntax near ' ,'"错误

标签 java sql sql-server jdbc

当用户按下按钮时,我编写了一些 java 代码将数据插入到 SQL Server 2012 的数据库中。当我运行代码时,我得到这个错误:

com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near ','.

它说 sqlstatement.executeUpdate(); 行导致了错误。我知道这条线没有问题。问题是我的 sql 查询,但我找不到我的查询是怎么错的。你能帮帮我吗?

这里是代码

count++;
for(int count = 0; count < table_1.getRowCount(); count++){
    try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
          Connection dbconbt8 = DriverManager.getConnection("" +"jdbc:sqlserver://localhost;databaseName=Store;user=sa;password=XXXXXX");
          String sqlQ = "INSERT INTO [dbo].[Transaction]([TransactionID],[ProductID]"+
           ",[TotalPrice]) VALUES ("+count+"','"+table_1.getValueAt(count, 0).toString()+"','"+sumprice+ "') ";
           PreparedStatement sqlstatement = dbconbt8.prepareStatement(sqlQ);
           sqlstatement.executeUpdate();
                       sqlstatement.close();
                       dbconbt8.close();
            } catch (SQLException e1) {

                          e1.printStackTrace();
                      } catch (ClassNotFoundException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                  }

最佳答案

您在 VALUES ( 之后缺少单引号 - 这应该可以解决问题:

String sqlQ = "INSERT INTO [dbo].[Transaction]([TransactionID],[ProductID]"+
    ",[TotalPrice]) VALUES ('"+count+"','"+table_1.getValueAt(count, 0).toString()+"','"+sumprice+ "') ";
--                          ^
--                        Here

但是,这是一个不好的解决方法:您应该使用参数重写您的查询,这样引用数据的问题就变得完全无关紧要了:

String sqlQ = "INSERT INTO [dbo].[Transaction]([TransactionID],[ProductID],[TotalPrice]) VALUES (?,?,?) ";
PreparedStatement sqlstatement = dbconbt8.prepareStatement(sqlQ);
sqlstatement.setInt(1, count);
sqlstatement.setString(2, table_1.getValueAt(count, 0).toString());
sqlstatement.setInt(3, sumprice);
sqlstatement.executeUpdate();

关于java - 执行 PreparedStatement 时得到 "jdbc.SQLServerException: Incorrect syntax near ' ,'"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21070894/

相关文章:

sql-server - 无法批量加载。操作系统错误代码 5(访问被拒绝。)

java - 套接字——来自 python 和 java 的不同字节

sql - VIEW 多个表上的 PostgreSQL 更新

sql-server - VS2013架构比较: "Source is unavailable" when running against SQL Server 2016 Express

sql - 我如何优化这个慢查询?

mysql - SQL:不允许从函数返回结果集

sql - 使用 DATEADD 后如何转换值

java - 验证失败后和重定向获取后的 Servlet 转发

java - 样式属性未使用 jsoup 显示

java - Java中的UploadFileAsync?