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+"%"),这样就是正确的了!
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+"%"),这样就是正确的了!
相关文章推荐
- jdbc操作数据库Statement和prepareStatement的区别
- java连接数据库的jdbc技术之preparestatement的相关操作
- JDBC操作timestamp和datetime时候应该注意的问题
- Qt 多线程与数据库操作需要注意的几点问题
- 数据库SQL Server2012笔记(八)——Statement与PreparedStatement的区别,JDBC方式操作数据库
- JDBC操作数据库的问题总结
- Qt 多线程与数据库操作需要注意的几点问题
- 使用prototype.js 的时候应该特别注意的几个问题.
- Java和jsp编程中应该注意的几个常见问题
- 优化数据库前一般要注意的几个问题
- 编写网络程序应该注意的几个问题
- Qt 多线程与数据库操作需要注意的几点问题
- 答辩应该注意的几个问题
- 使用CSpreadSheet应该注意的几个问题
- JDBC操作MySQL出现:This result set must come from a statement that was created with a result set type of ResultSet.CONCUR_UPDATABLE, ...的问题解决
- 2017.4.26总结(不同系统的操作应该注意的问题)
- 程序员在开发过程中应该注意的几个问题[转载]
- opencv应该注意的几个问题
- IT职业应该注意的几个问题
- 使用Visual Basic访问数据库几个注意的问题