簡體   English   中英

在JDBC中使用特殊SQL關鍵字更新命令

[英]Update command with special SQL keywords in JDBC

我正在嘗試更新我的SQL表中的條目,該表在JDBC中具有列名“from”。 以下是我嘗試執行的SQL命令:

    sql = "Update email_template set [from]="+"'"+3+"'"+" WHERE id="+idno;
    stmt.executeUpdate(sql);

但是它顯示以下錯誤:

您的SQL語法有錯誤; 查看與您的MySQL服務器版本對應的手冊,以便在'[from] ='Akshit'WHERE id = 1'附近使用正確的語法

MySQL轉義列名的方法是使用反引號:

sql = "Update email_template set `from`="+"'"+3+"'"+" WHERE id="+idno;

我建議在Java中處理SQL時使用java.sql.PreparedStatement 它可以用於批處理,並確保惡意SQL不會作為SQL代碼的一部分注入。

這是您的代碼在PreparedStatement外觀:

PreparedStatement stmt = connection.prepareStatement("UPDATE `email_template` SET `from` = ? WHERE id = ?"); 
stmt.setInt(1, 3);
stmt.setInt(2, idno);
stmt.executeUpdate();

如果這是一次性執行多行的操作,請將stmt.executeUpdate()替換為stmt.addBatch() (可能在某些循環中),當您准備執行批量更新時,調用stmt.executeBatch()

請注意, executeUpdate()executeBatch()返回受影響的行數; 這是您在提交后可能要驗證的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM