rsKey = pstmt.getGeneratedKeys();
getGeneratedKeys()方法怎么写的?
哪来的查询结果集?

解决方案 »

  1.   

    确定下你数据库的第一行是int型的吗?还是long?
      

  2.   

    pstmt.getGeneratedKeys()这个方法的问题。
      

  3.   

    把你的USER类种的ID改成Integer类型试试
      

  4.   

    直接System.out.println(getObject(1).toString());看下打印的值。
      

  5.   

    数据库用的是oracle 10g
    刚才试过了,把rsKey.getInt(1);  改成rsKey.getLong(1);  这句话就不报错。
      

  6.   

    你的resultset中的第一列可能不是数值类型吧?
      

  7.   

    oracle中返回的是long类型的,看提示人家没有去实现这个方法
      

  8.   


    你确实试过吗??
    我今天试过的结果怎么和你不一样呢?
    我试过以后知道了rs = pstmt.getGeneratedKeys();
    if(rs.next()) 
        id = rs.getString(1);这样得到结果的id 为
    id ---> AAAM7mAAEAAAAI1AAA因为Oracle数据库返回的是 ROWID
    不是你sequence的值所以无论用int  还是 long都是不对的!
      

  9.   

    orderId = rsKey.getInt(1);  //有问题,去掉这行以后不报错getInt(1)是获取你查询结果中的第一个属性,但是你现在没有在sql中指明查询的字段,所以它默认查找数据库中默认的第一个字段,但是你数据库中默认的第一个字段并不是int型的,所以报错。解决方法:查询的时候指明要查询的列,然后通过getInt(1),但是要注意类型是否匹配
      

  10.   

    getLong(2)看看? 获得主键怎么搞出个rowid.. LZ主键什么类型的?
      

  11.   

       ps = con.prepareStatement(sql, new String[]{"ID"});  // 后面一个参数表示需要返回的列名