java 特殊符号不可用

来源:百度知道 编辑:UC知道 时间:2024/05/31 08:16:48
我在java程序中写了一段往数据库里插入数据的sql 例如
"insert into test values('"+name+"') "
(输入框是text,触发按钮是button)
测试时,其他数据都可以,但是,只要数据中带 ' 这个单引号就会报错。
这是为什么啊??? 数据库为Oracle 9i 英文版

那是当然要报错啦。。
真正写代码的时候要用PrepareStatement而不用Statement.

正常的sql.参数值是jack.
insert into test values('jack'); //没错
带‘号的,参数值是ja'ck.
insert into test values('ja'ck'); //错误
你说这种sql能不报错嘛?

要用PrepareStatement就不一样了
可以用?的形式代替 ,从某种方式上来说,用PrepareStatement可以防止注入,速度也快。

String sql = "insert into test values(?)";
PreparedStatement statement=connection.prepareStatement(sql);
statement.setString(1,name);
statement.executeUpdate();

这里的1代表的是第一个问号,后边的name是对应这个问号的值。
参数中即使带'也可以填加到是数据库中。