gpt4 book ai didi

java sql语法错误插入到

转载 作者:行者123 更新时间:2023-11-29 09:56:14 24 4
gpt4 key购买 nike

我在运行此 sql 语句时遇到问题。如果我在 mysql 中运行它,它工作正常但在 java 中我得到这个错误:

You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near '' at line 1

数据库有一个id(pk) autogenerated, varchar, int, varchar;

有人可以帮助我吗?

int i = statement.executeUpdate("INSERT INTO sala values('','"+ nume.getText() + "', "+ Integer.parseInt(capacitate.getText())+ ", '" + sunet.getText()+"'");

最佳答案

不要只是尝试根据 adarshr 的回答通过调整 SQL 来修复此代码。你这里有一个基本的安全问题,你应该现在解决。您对 SQL injection attacks 持开放态度由于直接在您的 SQL 中包含用户数据。

您应该使用 PreparedStatement,在 SQL 中将参数声明为占位符,然后单独给定值。 具体您将如何执行此操作将取决于您的 JDBC 提供程序,但它看起来是这样的:

// TODO: Fix the column names, and close the statement in a try/finally block
PreparedStatement pst = conn.prepareStatement(
"INSERT INTO sala (nume, capacitate, sunet) VALUES (?, ?, ?)");
pst.setString(1, nume.getText());
pst.setInt(2, Integer.parseInt(capacitate.getText()));
pst.setString(3, sunet.getText());
pst.executeUpdate();

请注意,如果您可以通过不需要整数解析的方式获得容量,那就太好了。否则,请考虑使用对语言环境更友好的 NumberFormat。另请注意,我已将列名添加到 SQL 中,以使其在面对架构更改时更加健壮。

关于java sql语法错误插入到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10656213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com