获取后台数据的方法
Connection conn = DBUtils.getInstance().getConn();
PreparedStatement pstmt = null;
ResultSet rset = null;
TestSheet testSheet=null;
String sql = "select * from test_sheet where sheet_no=?";
try{ pstmt = conn.prepareStatement(sql);
pstmt.setString(1,sheetNo);
rset = pstmt.executeQuery();
testSheet = new TestSheet(); if(rset!=null && rset.next()){
                                该处为数据值获取
}
}catch(SQLException e){
e.printStackTrace();
}finally{
DBUtils.getInstance().ReleaseRes(conn, null, null);
}
return testSheet;         /**
 * 获取数据库连接
 * @return
 */
//synchronized 保证在多线程并发环境下,该方法在单一事件内只有一个线程在访问。
public synchronized Connection getConn()
{

Connection conn=null;

//先从当前线程上取出连接实例
conn = tl.get();

if(conn==null) {//如果当前线程上没有绑定连接,则向连接池申请一个新的连接
try {
//先从当前线程上取出连接实例
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
conn=DriverManager.getConnection("proxool.testsys-ds");
tl.set(conn);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}

return conn;

}

/**
 * 释放数据库资源
 * @param conn
 * @param pstmt
 * @param rset
 */
public void ReleaseRes(Connection conn,PreparedStatement pstmt,ResultSet rset)
{
try{
  if(rset!=null) rset.close();
  if(pstmt!=null) pstmt.close();
  if(conn!=null) {
  tl.remove();//卸装线程绑定
  conn.close();
  }
}
catch(SQLException e)
{
e.printStackTrace();
}
}断点设置后,sql语句在PL/SQL中可以查到一条数据。但是接着运行断点,在rset.next()时并没有获取数据,也就是rset为空集,这是什么问题

解决方案 »

  1.   

    ResultSet rset = null;
    if(rset!=null && rset.next()){
    是不是这里的原因啊
      

  2.   

    if(rset!=null && rset.next()){
      该处为数据值获取
    }这里,不知道你if内是怎么取值的,但是绝对别再出现next()
      

  3.   

    rset刚开始遍历时是处于第一个数据的前面,要获取下一个数据应该是rset.next()的,关键是就一张表会出现无法获取数据的问题,其他的表都可以获取数据。将无法获取的表重建,任然会出现这种情况。
      

  4.   

    换个问法,if成立了么?进入了{}么?sheet_no 这个字段,类型是数字还是char?
      

  5.   

    写法OK!程序没有问题!不要告诉我表中本身是没有数据或者没有commit;
      

  6.   

    把你sql放在mysql编辑器进行查询下,看是否有数据,之后在查询你在程序端的那个判断,看返回什么???