JAVA JDBC mySql预准备语句更新查询

时间:2019-02-07 23:27:46

标签: java mysql jdbc sql-update prepared-statement

我正在尝试执行以下代码

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();

}

}

但出现以下错误

  

线程“主”中的异常   com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您有一个   您的SQL语法错误;检查与您的手册相对应的手册   MySQL服务器版本附近使用正确的语法吗?哪里   userid =?在第1行

我的数据库只有一名表生,有2列userid和username和10行我缺少的行

2 个答案:

答案 0 :(得分:1)

尝试:

int rs = stmt.executeUpdate();

代替:

int rs = stmt.executeUpdate(query);

executeUpdate()运行所需语句的查询。 executeUpdate(query)运行传递给该方法的查询。之所以收到此错误,是因为您传递的SQL带有错误(包含?)。

答案 1 :(得分:0)

请尝试:

"UPDATE student SET username= ? ” + ” where userid= ?"; 

int rs=stmt.executeUpdate();