首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MySQL PreparedStatement 正確傳參避免資料為空

     編輯:程式設計疑難解答

使用 JDBC 執行 INSERT 時,若直接在 SQL 字串中寫變數名稱(如 values(ID,PASSWORD,NAME)),資料庫會將其視為字面值而非參數,導致寫入空值。正確做法是使用 PreparedStatement 佔位符。

錯誤寫法

String sql = "insert into qq(ID,PASSWORD,NAME) values(ID,PASSWORD,NAME)";
st.executeUpdate(sql);  // 寫入的都是字串 "ID"、"PASSWORD"、"NAME"

正確寫法

String sql = "insert into qq(ID,PASSWORD,NAME) values(?,?,?)";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, s1);
ps.setString(2, s2);
ps.setString(3, s3);
ps.executeUpdate();

優勢

  • 防止 SQL 注入。
  • 自動處理引號、轉義字元。
  • 效能較好(預編譯可重用執行計畫)。

切記:拼接 SQL 字串極易出錯且不安全,養成使用 PreparedStatement 的習慣。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved