JAVA JDBC mySql Prepared statement 更新查询 [重复]
Posted
技术标签:
【中文标题】JAVA JDBC mySql Prepared statement 更新查询 [重复]【英文标题】:JAVA JDBC mySql Prepared statement Update query [duplicate] 【发布时间】:2019-02-07 23:27:46 【问题描述】:我正在尝试执行以下代码
package jdbclesson;
import java.sql.*;
public class PreparedQuery
public static void main(String[] args) throws Exception
String url = "jdbc:mysql://localhost:3306/alien?useSSL=false";
String uname = "root";
String pass = "ma123";
String query = "UPDATE student SET username= ? where userid= ? ";
PreparedStatement stmt = null;
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, uname, pass);
stmt = con.prepareStatement(query);
stmt.setString(1, "tina");
stmt.setInt(2, 6);
int rs = stmt.executeUpdate(query);
System.out.println(rs);
stmt.close();
con.close();
但出现以下错误
线程“main”中的异常 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,以便在 '? 附近使用正确的语法在哪里 用户 ID=?在第 1 行
我的数据库只有 1 个表 student 有 2 列用户 ID 和用户名以及 10 行我缺少什么
【问题讨论】:
用户 id 是主键还是有设置为自动递增的列 去掉 ? 之间的空格和双引号 (")userid= ? ";
请再试一次。
【参考方案1】:
试试:
int rs = stmt.executeUpdate();
代替:
int rs = stmt.executeUpdate(query);
executeUpdate() 运行准备好的语句的查询,这是您想要的。 executeUpdate(query) 运行传递给该方法的查询。您收到错误是因为您传递了带有错误的 SQL(包含?)。
【讨论】:
【参考方案2】:请尝试:
"UPDATE student SET username= ? ” + ” where userid= ?";
int rs=stmt.executeUpdate();
【讨论】:
这两行代码不是已经出现在问题中了吗?以上是关于JAVA JDBC mySql Prepared statement 更新查询 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
jdbc为啥prepared statement不支持命名参数?
哪种方法在性能方面更好? (关于JDBC中prepared statement中可变参数标记的使用)
错误:[Pivotal][Greenplum JDBC Driver][Greenplum]prepared statement "PS1" 已经存在
未找到 Java Prepared statement 错误表
Prepared Statement 中的绑定不适用于 Microsoft SQL Server JDBC 驱动程序 sqljdbc4.jar