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+"%"),这样就是正确的了!