java - 执行更新语句

标签 java mysql sql database

我尝试使用 UPDATE 语句将日期更新到表中,但每次这样做都会出错。我尝试了多种方法,但仍然出现错误。这就是我正在尝试做的事情

public void updateTeacher(Teacher a)
{
    int f = Integer.parseInt(a.getiD());

    String query = "UPDATE teacher SET (NAME='" + a.getNaMe() + "' ADDRESS='" + a.getAddRess() + "' PHONE_NO="+ a.getPhOne() + " EMAIL='" + a.geteMail() + ") WHERE ID =" + f;

    try
    {
        stmt.executeUpdate(query);

    }
    catch(SQLException e)
    {
        System.out.println("Problem in Query");
        e.printStackTrace();
    }
}

这样我得到以下错误

Problem in Query com.mysql.jdbc.exceptions.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 'ADDRESS='Lahore, Pakistan' PHONE_NO=2147483647 EMAIL='n.nadeem@bnu.edu.pk WHERE ' at line 1

请告诉我我哪里错了,并请更新声明。

最佳答案

首先,您根本不应该使用字符串连接,而应该使用参数化查询,因为连接会使代码变得困惑并导致 SQL 注入(inject)问题。

也就是说,代码中的另一个问题是您设置的值之间缺少逗号。应该是:

String query = "UPDATE teacher SET NAME='" + a.getNaMe() + "' , ADDRESS='" + a.getAddRess() + "' , PHONE_NO="+ a.getPhOne() + " , EMAIL='" + a.geteMail() + "' WHERE ID =" + f;

了解有关如何使用 prepared statements 的更多信息.

关于java - 执行更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31632508/

相关文章:

java - 将 HashMap 绑定(bind)到 ComboBox

php - 何时、为何以及何处在 Web 应用程序中使用锁定表

mysql - SUBSTR 没有返回记录 (mysql)

mysql - 查看数字是否总是按序列递增

java - 检查特定行中的给定字符串

java - T型是什么类型

php - 当我在 MAMP 上选择 'Start Servers' 时,MySQL 服务器无法启动

sql - 如何计算具有递归关系的表中唯一对的数量?

java - 在Android中设置按钮的宽度

mysql - 我如何优化我的sql查询?