preparedStatement.execute【犯傻心得】

来源:互联网 发布:红五图库永久域名三毛 编辑:程序博客网 时间:2024/04/30 06:25

犯傻心得1:

String sql=”select * from username=?”preparedStatement=db.getPreStatement(sql);preparedStatement.setString(1,name);ResultSet rst=preparedStatement.executeQuery(sql);

编译也不报错,一运行就完蛋。看错误提示,说我sql语句有问题,我还以为是name没有插进去,心里还想着是怎么的啊,搜索了好半天。

后来才发现,妈呀,执行的sql是带了占位符的sql啊,这真是太傻了呀!!!


犯傻心得2:

用PreparedStatement的execute方法执行sql插入语句,执行成功,但是boolean的返回结果却为false。百思不得其解。

后来在网上【http://blog.csdn.net/imlmy/article/details/8237219】看到说:

“throws SQLException在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。一些特别处理过的语句返回多个结果,execute 方法处理这些复杂的语句;executeQuery 和 executeUpdate 处理形式更简单的语句。 
execute 方法返回一个 boolean 值,以指示第一个结果的形式。必须调用 getResultSet 或 getUpdateCount 方法来检索结果,并且必须调用 getMoreResults 移动到任何后面的结果。
返回:
如果第一个结果是 ResultSet 对象,则返回 true;如果第一个结果是更新计数或者没有结果,则返回 false

意思就是如果是查询的话返回true,如果是更新或插入的话就返回false了;”


所以执行插入或更新语句应该使用executeUpdate。

并且,这个executeUpdate的返回值已经不是boolean了,在if里面不能直接用了,可以用if(result==1)或者是if(result>0)来判断是否正确更新。
0 0
原创粉丝点击