[英]Java Oracle insert Query
我正在嘗試使用Java JDBC在oracle中插入用戶的輸入。 我必須使用插入查詢。
Oracle的列類型為varchar2。
如果用戶未輸入特殊字符,我可以插入。 當用戶輸入#等特殊字符時 /和$給出異常
請幫助解析這些特殊字符。 我需要使用插入查詢,但是我無法在項目中使用存儲過程或可調用語句。
感謝您的時間。
據我所知,Oracle不需要您轉義字符串值,因此:
INSERT INTO some_table (my_varchar_column) VALUES ('my string with a ?');
應該管用。
但是要確保使用java.sql.PreparedStatement
如下:
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO some_table (my_varchar_column) VALUES (?)");
preparedStatement.setString(1, "my string with a ?");
preparedStatement.execute();
通常,建議使用准備好的語句對數據庫執行SQL。 它將有助於提高性能並有助於防止SQL注入攻擊。
需要轉義SQL字符串常量的唯一字符是單引號,這是顯而易見的原因,否則可能會將其與字符串結尾混淆。
如果使用的是JDBC PreparedStatement,則問號本身代表參數。 你會寫類似
插入mytable(field1,field2)值(?,?)
然后使用set語句設置這些值。 如果將問號用引號引起來,則它應該只是字符串中的另一個字符,即
插入mytable(field1,field2)值(?,'?')
有一個參數? 還有一個字符串文字“?”。
PreparedStatement.set將對引號進行必要的轉義。 如果您自己構建查詢,則需要包含代碼以進行轉義。 (只需將報價加倍,例如
插入mytable(field1)值('Bob說,'Hello'')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.