java - 更新java中的查询语法错误

标签 java database

我试图在我的java上进行更新查询,我的sql语法不断出错,但我已经尝试在我的sqlyog中执行查询并且它有效,但它在我的程序中不起作用,这是我的查询

String query = "UPDATE t_surat_masuk SET kode_klasifikasi = '"+kode_klasifikasi+"',"

                        + " pengirim = '"+pengirim+"',"
                        + " no_surat = '"+no_surat+"', "
                        + " tgl_surat = '"+tanggalsurat+"',"
                        + " perihal = '"+perihal+"',"
                        + " tgl_surat_masuk = '"+tanggalmasuk+"', "
                        + " penerima = '"+penerima+"', "
                        + " WHERE id_surat='"+id_surat+"'";

抱歉我的英语不好,谢谢

最佳答案

您的确切语法错误是在 SET 子句之后、WHERE 子句之前有一个杂散逗号。但这里最好的答案是使用准备好的语句:

String sql = "UPDATE t_surat_masuk SET kode_klasifikasi = ?, pengirim = ?, ";
sql += "no_surat = ?, tgl_surat = ?, perihal = ?, tgl_surat_masuk = ?, penerima = ? ";
sql += "WHERE id_surat = ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, kode_klasifikasi);
ps.setString(2, pengirim);
ps.setString(3, no_surat);
ps.setString(4, tanggalsurat);
ps.setString(5, perihal);
ps.setString(6, tanggalmasuk);
ps.setString(7, penerima);
ps.setInt(8, id_surat);
ps.executeUpdate();

请注意,我假设所有列都是字符串,除了 id_surat 列,它听起来像一个整数列。您可能需要更改上述某些 setter 的类型才能使其正常工作。

一般来说,您可以看到,使用准备好的语句,您可以写出本质上是实际原始查询的内容。这使得您更难出现当前类型的语法错误。

关于java - 更新java中的查询语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50303269/

相关文章:

java - 使用 java 运行 vmware-player 镜像

android - 如何从具有两个表的 SQLite 数据库中获取用户详细信息?

database - 将 Flyway 与更改同一对象的多个功能分支一起使用

java - 接口(interface)方法在其他类中不可见

java - 为什么java.util.Date的构造函数对int和long之间的参数的作用不同?

java - 为什么Java在理论上是平台独立的,而在实践中是平台依赖的?

php - 创建数据库和用户 mysql 并设置权限 php

mysql - 如何调查 MySQL 错误

database - linux中的crontab oracle问题

Java安全管理器: how to specify "No Permission"?