首頁 > 資料庫 > mysql教程 > 為什麼在 Java 應用程式中使用PreparedStatements 時會收到 MySQLSyntaxError 例外狀況?

為什麼在 Java 應用程式中使用PreparedStatements 時會收到 MySQLSyntaxError 例外狀況?

Barbara Streisand
發布: 2024-10-31 07:38:02
原創
802 人瀏覽過

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

儘管語句正確,JDBC 傳回MySQLSyntaxError 例外

在連接到MyrrSQL 資料庫的「不符遭遇。儘管使用 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板