Java Oracle插入查询

Java Oracle插入查询,java,oracle,insert,Java,Oracle,Insert,我正在尝试使用JavaJDBC在oracle中插入用户输入。我必须使用插入查询 Oracle的列类型为varchar2 如果用户未输入特殊字符,我可以插入。 当用户输入特殊字符如#?/这是个例外 请帮助解析这些特殊字符。我需要使用插入查询,我不能在我的项目中使用存储过程或可调用语句 谢谢您的时间。据我所知,Oracle不要求您转义字符串值,因此: INSERT INTO some_table (my_varchar_column) VALUES ('my string with a ?');

我正在尝试使用JavaJDBC在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(字段1,字段2)中插入值(?,)

然后使用set语句设置这些值。如果用引号括起问号,那么它应该是字符串中的另一个字符,即

在mytable(字段1、字段2)中插入值(?,?)

有一个参数吗?和一个字符串文本“?”

PreparedStatement.set将对引号进行必要的转义。如果您自己构建查询,则需要包含执行该转义的代码。(只需将报价加倍,例如


在mytable(field1)中插入值('Bob说,'Hello')Nick,谢谢你的回复。你说Oracle不需要转义字符串。但是当我试图插入……通过java…它被认为是String HayAjay-的一部分参数。请你发布你的java代码。在上面我举的两个例子中,我认为驱动程序应该处理任何需要的逃逸。