首页 >数据库 >mysql教程 >为什么在 Java 应用程序中使用PreparedStatements 时会收到 MySQLSyntaxError 异常?

为什么在 Java 应用程序中使用PreparedStatements 时会收到 MySQLSyntaxError 异常?

Barbara Streisand
Barbara Streisand原创
2024-10-31 07:38:02797浏览

Why am I getting a MySQLSyntaxError Exception when using PreparedStatements in my Java application?

尽管语句正确,JDBC 返回 MySQLSyntaxError 异常

在连接到 MySQL 数据库的 Java 应用程序中执行 INSERT 语句时,MySQLSyntaxError 异常为遭遇。尽管使用 MySQL Workbench 验证了语句的正确性,但错误仍然存​​在。

检查提供的代码发现问题在于PreparedStatement 中占位符 (?) 的使用。这些占位符应该使用 setXXX() 方法正确设置,而不是出现在传递给 executeUpdate() 的 SQL 字符串中。

这是修改后的代码:

public static boolean aggiungiElem(String nome, GrafoGenerico g){
    if(connessioneAperta()){
        try{
            String sqlCommandUser="SELECT USER()";
            String sqlCommandInserim="INSERT INTO salvataggi VALUES ( ?, ?, DEFAULT , NULL );";
            PreparedStatement sUser=conn.prepareStatement(sqlCommandUser);
            ResultSet risultatiUtente=sUser.executeQuery();
            String utente = null;
            while(risultatiUtente.next()){
                utente=risultatiUtente.getString(1);
            }
            sUser.close();
            PreparedStatement sInserim=conn.prepareStatement(sqlCommandInserim);
            sInserim.setString(1, utente);
            sInserim.setString(2, nome);
            //sInserim.setObject(3,g);
            System.out.println(sInserim.toString());
            sInserim.executeUpdate(); // Execute the prepared statement without the SQL string
            sInserim.close();
            return true;
        }
        catch(SQLException e){
            // Log the exception and handle appropriately
        }
        finally {
            if (sInserim != null) {
                sInserim.close();
            }
        }
    }
    else
        return false;
}

请注意,executeUpdate( sqlString) 方法只能与 Statement 对象一起使用,而不是与PreparedStatement 对象一起使用。如原代码所示错误使用会导致语法错误。

此外,建议在finally块中关闭PreparedStatement,以防止出现异常时资源泄漏。这也适用于 Connection、Statement 和 ResultSet。

以上是为什么在 Java 应用程序中使用PreparedStatements 时会收到 MySQLSyntaxError 异常?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn