gpt4 book ai didi

Java MySQL 执行更新 SQLSyntaxErrorException

转载 作者:行者123 更新时间:2023-11-29 17:31:06 25 4
gpt4 key购买 nike

我刚刚开始使用 Java 中的 MySQL,我正在尝试更新数据库中的现有数据。主要目的是创建一个计数器,当操作完成时,将更新数据库中的 int 。

在这种情况下,我尝试在代码编译时通过增加整数来更新 daily_search_count 。下面你可以看到我的数据库数据的图片: data within the database我编写的代码旨在每次运行代码时将“daily_search_count”增加 1。但不幸的是我收到以下错误:

Exception in thread "main" java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''accounts' set 'daily_search_count' = '4' where 'id' = '1'' at line 1
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:118)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:960)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1116)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1066)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1396)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1051)
at Database.main(Database.java:29)

我看不出我的代码有什么问题,如下所示:

import java.sql.*;

public class Database {

public static void main(String[] args) throws Exception {
String host = "jdbc:mysql://localhost:3306/presearch";
String username = "root";
String password = "";
String query = "select * from accounts";

Connection con = DriverManager.getConnection(host, username, password);

Statement st = con.createStatement();
ResultSet rs = st.executeQuery(query);

String userData = "";

while (rs.next()) {
if (rs.getInt(4) < 33) {
userData = rs.getInt(1) + " : " + rs.getString(2) + " daily search count : " + rs.getInt(4);
System.out.println(userData);

int counter = rs.getInt(4) + 1;
PreparedStatement updatexdd = con.prepareStatement("update 'accounts' set 'daily_search_count' = '" + counter + "' where 'id' = '" + rs.getInt(1) + "'");
int updatexdd_done = updatexdd.executeUpdate();
}
}

st.close();
con.close();

}

}

我希望有人能看到我做错了什么。

提前致谢!

最佳答案

您的代码中存在一些必须避免的问题:

  • 表名和列名不应位于两个引号之间'accounts'
  • 确保使用占位符(?) 在带有PreparedStatement 的查询中指定您的属性
  • 确保在finally block 中关闭连接和语句
  • 我还注意到,您只需要一个查询

您的代码应如下所示:

public static void main(String[] args) throws Exception {
String host = "jdbc:mysql://localhost:3306/presearch";
String username = "root";
String password = "";
String query = "update accounts set daily_search_count = daily_search_count + 1 where daily_search_count < 33";
try (Connection con = DriverManager.getConnection(host, username, password);
PreparedStatement updatexdd = con.prepareStatement(query)) {

int updatexdd_done = updatexdd.executeUpdate();
}
}

在我的代码中,我使用 try-with-resources Statement它支持 AutoCloseableCloseable 接口(interface),这意味着您不需要关闭连接或语句。

关于Java MySQL 执行更新 SQLSyntaxErrorException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50648786/

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