java代码如下:
String qry = "select username,password,email,phone,addr,rdate from user where id = ?";
int uid = 1;
ResultSet rs;
Connection conn;
//省略取得JDBC连接的代码
PreparedStatement ps = conn.prepareStatement(qry);
try {
conn.setAutoCommit(false);
ps.setInt(1, uid);
rs = ps.executeQuery();
conn.setAutoCommit(true);
catch (SQLException e) {
e.printStackTrace();
}
可以执行查询而不抛出异常,但是一旦调用rs.getString()就会有异常,调用rs.getFetchSize()得到的结果是0,而我再MySQL控制台下执行相同的查询就有结果匹配.应该怎么改代码才能得到查询结果呢?

解决方案 »

  1.   

    你是否获得了Connection啊
    你为什么在查询中设置事务???没有必要!把事务去掉看看!
      

  2.   

    取得Connection了,创建表和插入数据都没有问题,事物去掉后只能得到getString(1),getString(2)或其他的就会出错,在MySQL控制台下会得到6个结果的.
      

  3.   

    你执行完rs = ps.executeQuery();后直接执行的rs.getString()????没有rs.next()??????
      

  4.   

    你在MySQL控制台下会得到6个结果是结果集中的条数吧?你getString(2)控制的是列,不是行。
      

  5.   

    conn.setAutoCommit(false); 
    ...
    ...
    conn.setAutoCommit(true); //这里很奇怪,这里又把提交方式调成自动了;而没进行提交
    一般情况是这样干的conn.setAutoCommit(false); 
    ...
    ...
    conn.commit();//执行提交
      

  6.   

    1,
    try { 
    conn.setAutoCommit(false); 
    ps.setInt(1, uid); 
    rs = ps.executeQuery(); 这个地方要手动conn.commit();否则上面的语句相当于没有执行。
    conn.setAutoCommit(true); 
    } catch (SQLException e) { 
    e.printStackTrace(); 
    } 2,try { 
    conn.setAutoCommit(false); 
    ps.setInt(1, uid); conn.setAutoCommit(true); 执行前修改为自动提交rs = ps.executeQuery(); 
    } catch (SQLException e) { 
    e.printStackTrace(); 
    }