preparedstatement execute()操作成功!但是返回false


转自http://blog.sina.com.cn/s/blog_963fb3af01013rcs.html

Connection con = getConn();

String sql2 = "insert into serial_history h "
       + "(serial_no, tran_date, occur_bala, cust_no, status, "
       + " area_code, tran_type, return_code) "
       + "values(?,?,?,?,?,?,?,?)";

PreparedStatement ps2= con.prepareStatement(sql2);

...

ps2.setDouble(3, bd.getTranOccur());
ps2.setString(4, bd.getCustNo().substring(3));

...

boolean b = ps2.execute();//这里数据成功插入了!也没出异常!但是返回false;

int success = ps2.executeUpdate();//保险期间还是用了这个

经过查看资料发现:下面是API上的,能看懂

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

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

execute()返回的是一个boolean值,代表两种不同的操作啊,getResultSet()返回的是结果集,而getUpdateCount()返回的是更新的记数


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM