使用Java从oracle获取行id

使用Java从oracle获取行id,java,oracle,jdbc,oracle11g,oracle10g,Java,Oracle,Jdbc,Oracle11g,Oracle10g,我需要使用Java从Oracle数据库获取rowid。我使用了下面的代码 Statement st = con.createStatement(); ResultSet rs=st.executeQuery("select * from ABC"); while(rs.next()) { RowId str=rs.getRowId(1); System.out.println(str); } 我得到的结果是 ora

我需要使用Java从Oracle数据库获取rowid。我使用了下面的代码

Statement st = con.createStatement();
ResultSet rs=st.executeQuery("select * from ABC");
while(rs.next()) {
            RowId str=rs.getRowId(1);        
            System.out.println(str);
        }
我得到的结果是

oracle.sql.ROWID@2ce6c6ec
oracle.sql.ROWID@1bae316d
但我需要十六进制值,比如

AAAdItACwAABXcIAAA
谁能给我指点一下吗

感谢来自Java文档的

检索RowId对象通过调用 接口ResultSet和中定义的getter方法 可调用声明。返回的RowId对象是不可变的 对象,您可以将其作为唯一的 一行的标识符。下面是调用 ResultSet.getRowId方法:

字符串toString() 返回表示此java.SQL.ROWID对象指定的SQL ROWID值的字符串。

您可以使用

这将直接为您提供十六进制值

String hexValue = DatatypeConverter.printHexBinary(resultSet.getRowId(10).getBytes())
这是完整的代码

Statement st = con.createStatement();
ResultSet rs=st.executeQuery("select * from ABC");
while(rs.next()) 
{
    String str= DatatypeConverter.printHexBinary(resultSet.getRowId(1).getBytes())       
    System.out.println(str);
}

您可能正在使用过时的JDBC驱动程序,因为较新的驱动程序正确地实现了
ROWID.toString()
,正如您所看到的-toString()以特定于提供连接的驱动程序的形式返回其ROWID的内容,可能不是以ROWID文本的形式返回。你到底想要什么?如果您尝试加载ID列-只需按列名输入即可尝试此操作,并查看它是否打印您想要的
System.out.println(新字符串(rowId.getBytes())@a_horse_,没有名字,你能告诉我正确的司机吗。我可以使用哪个版本。@PushpeshKumarRajwanshi谢谢。。这似乎起作用了,我能够获取值。
Statement st = con.createStatement();
ResultSet rs=st.executeQuery("select * from ABC");
while(rs.next()) 
{
    String str= DatatypeConverter.printHexBinary(resultSet.getRowId(1).getBytes())       
    System.out.println(str);
}