gpt4 book ai didi

java - 在 MySQL 数据库中使用 JDBC 更新数据

转载 作者:行者123 更新时间:2023-12-01 00:10:09 25 4
gpt4 key购买 nike

我刚开始学习 JDBC 和数据库。我试图创建一个将数据更新到现有数据库的简单代码。我创建了 localhost 添加了 xampp 和一些数据。我在 oracle 网页上阅读了一些教程并观看了几个关于 JDBC 的 lynda.com 视频并尝试编写这个程序,但它不起作用。

这是我的主要

package com.lynda.javatraining.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Main {

private static final String USERNAME = "vato";
private static final String PASSWORD = "vatopassword";
private static final String CONN_STRING =
"jdbc:mysql://localhost/university";

public static void main(String[] args) throws SQLException {

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD);
Building something = new Building();
something.UpdateBuilding("Daniels", "Gordon", 5, conn);
} catch (SQLException e) {
System.err.println(e);
} finally {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
}

}

我创建了一个 Building 类,用于添加构建、更新、删除等功能。

这是我的 Updatebuilding 类代码。

public void UpdateBuilding(String NewName, String buildingname, int IDnum, Connection conn) throws SQLException
{
Statement stmt = null;
ResultSet rs = null;
try {
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
stmt.executeUpdate("UPDATE building SET BuildingName = \"" + NewName + "\" WHERE BuildingID = '"+ IDnum +"' AND BuildingName = '" + buildingname + ";");
this.PrintBuilding(conn);
} catch (SQLException e) {
System.err.println(e);
} finally {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
}
}

编译这段代码时出现这个错误

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 ''Gordon' at line 1

我试着不给 Gordon 作为参数,但是我在第 1 行得到了关于 ID 号“5”的相同错误。

你能帮帮我吗?这段代码有什么问题?

最佳答案

您在声明中遗漏了一个':

AND BuildingName = '" + buildingname + "';");
^^^

这应该可以解决您的问题。但是想想准备好的陈述。使用准备好的语句要好得多。

关于java - 在 MySQL 数据库中使用 JDBC 更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25257842/

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