java clearparameters_PreparedStatement.clearParameters() problem in ViewObject:next() — oracle-tech...

I faced with a problem that occurs in this simple example:

ViewObject vo = am.createViewObjectFromQueryStmt("vo_b2b_data", "select id from b2b_data where name='test'");

vo.executeQuery();

Row row = vo.next();

result = row.getAttribute(0);result is always null!

so, I start digging with log4jdbc:

[740] vo_b2b_data ViewRowSetImpl.execute caused params to be "un"changed

[741] Carrying over CappedRowCount:-1for ViewRowSet:vo_b2b_data

[743] select id from b2b_data where name='test'

[744] *** createViewAttributeDefImpls: weblogic.jdbc[email protected]ab

[745] Bind params for ViewObject: [vo_b2b_data]AppModuleAutoContract.vo_b2b_data

[746] Column count: 1

[747] Column count: 1

[748] executeQueryForCollection ViewObject:vo_b2b_data, RowSet:vo_b2b_data

Execute query

[750] select id from b2b_data where name='test'

[751] ViewObject: [vo_b2b_data]AppModuleAutoContract.vo_b2b_data Created new QUERY statement

2012-02-03 15:25:28.250 DEBUG audit: 1. PreparedStatement.new PreparedStatement returned weblogic.jdbc.common.internal.ConnectionEnv.makeStatement(ConnectionEnv.java:1481)

2012-02-03 15:25:28.252 DEBUG audit: 1. Connection.prepareStatement(select id from b2b_data where name='test') returned [email protected] weblogic.jdbc.common.internal.ConnectionEnv.makeStatement(ConnectionEnv.java:1481)

2012-02-03 15:25:28.254 DEBUG audit: 1. PreparedStatement.setMaxRows(0) returned weblogic.jdbc.wrapper.PreparedStatement_net_sf_log4jdbc_PreparedStatementSpy.setMaxRows(null:-1)

[752] Bind params for ViewObject: [vo_b2b_data]AppModuleAutoContract.vo_b2b_data

Execute query

2012-02-03 15:25:28.261 DEBUG resultset: 1. ResultSet.new ResultSet returned weblogic.jdbc.wrapper.PreparedStatement.executeQuery(PreparedStatement.java:135)

2012-02-03 15:25:28.262 DEBUG audit: 1. PreparedStatement.executeQuery() returned [email protected] weblogic.jdbc.wrapper.PreparedStatement.executeQuery(PreparedStatement.java:135)

2012-02-03 15:25:28.264 DEBUG resultset: 1. ResultSet.next() returned true weblogic.jdbc.wrapper.ResultSet_net_sf_log4jdbc_ResultSetSpy.next(null:-1)

2012-02-03 15:25:28.265 DEBUG resultset: 1. ResultSet.isClosed() returned false weblogic.jdbc.wrapper.ResultSet.isClosed(ResultSet.java:158)

2012-02-03 15:25:28.271 DEBUG resultset: 1. ResultSet.getRow() returned 2 weblogic.jdbc.wrapper.ResultSet_net_sf_log4jdbc_ResultSetSpy.getRow(null:-1)

2012-02-03 15:25:28.272 DEBUG audit: 1. PreparedStatement.clearParameters() returned weblogic.jdbc.wrapper.PreparedStatement.clearParameters(PreparedStatement.java:268)

Execute query

Execute query

2012-02-03 15:25:29.578 DEBUG resultset: 1. ResultSet.getInt(1) returned 0 weblogic.jdbc.wrapper.ResultSet_net_sf_log4jdbc_ResultSetSpy.getInt(null:-1)

2012-02-03 15:25:29.580 DEBUG resultset: 1. ResultSet.wasNull() returned true weblogic.jdbc.wrapper.ResultSet_net_sf_log4jdbc_ResultSetSpy.wasNull(null:-1)

2012-02-03 15:25:29.583 DEBUG resultset: 1. ResultSet.next() returned true weblogic.jdbc.wrapper.ResultSet_net_sf_log4jdbc_ResultSetSpy.next(null:-1)

2012-02-03 15:25:29.584 DEBUG resultset: 1. ResultSet.isClosed() returned false weblogic.jdbc.wrapper.ResultSet.isClosed(ResultSet.java:158)

2012-02-03 15:25:29.585 DEBUG resultset: 1. ResultSet.getRow() returned 3 weblogic.jdbc.wrapper.ResultSet_net_sf_log4jdbc_ResultSetSpy.getRow(null:-1)

2012-02-03 15:25:32.388 DEBUG resultset: 1. ResultSet.close() returned weblogic.jdbc.wrapper.ResultSet.internalClose(ResultSet.java:181)I repeated the behavior in this simple code:

boolean b1, b2, b3;

int n1, n2;

Connection conn = DriverManager.getConnection("jdbc:sqlite:d:/test.db", "1", "1");

PreparedStatement st = conn.prepareStatement("select id from b2b_data where name='test'");

st.setMaxRows(0);

ResultSet rs = st.executeQuery();

b1 = rs.next();

b2 = rs.isClosed();

n1 = rs.getRow();

//st.clearParameters();

n2 = rs.getInt(1); // 0 if clearParameters not commented

b3 = rs.wasNull();and realized that bug in clearParameters() call

may be this is error in database driver..

can i switch off clearParameters after every next some how?

ps: database sqlite3, driver sqlitejdbc-v056.jar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值