您的位置:首页 > 数据库

jdbc中preparestatement操作数据库几个应该注意的问题

2013-07-18 15:44 429 查看
利用jdbc操作数据库时,我们通常会选用preparestatement来执行预编译的sql 语句,如下语句是我们经常使用的(sql server 数据库):
select top 7 from table1 where name like '%aa%'
现在我们的需求是:从数据库取出来的条数是任意的,后面的aa关键字也是动态从前台传进去的,通常情况下我们会这样写sql 语句:
String sql="select top ? from table1 where name like '%?%'";
PrepareStatement ppst=connection.prepareStatement(sql);
ppst.setObject(1,4);
ppst.setObject(2,"aa");
ppst.executeQuery();
结果你会发现报错,出异常了,后来网上查了下资料才了解到,在top关键字后是不能动态设置值的,就是说top后的?是不能通过setObject()来指定的,并且后面的like后关键字也不能通过'%?%'这种方式来指定,而应该这样写:
"where name like ?"
然后setObject(2,"%"+aa+"%"),这样就是正确的了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: