繁体   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