簡體   English   中英

Java Oracle插入查詢

[英]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.

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