使用Java从Oracle获取行ID

时间:2018-12-11 08:22:35

标签: 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);
        }

我得到的结果是

oracle.sql.ROWID@2ce6c6ec
oracle.sql.ROWID@1bae316d

但是我需要像

这样的十六进制值
AAAdItACwAABXcIAAA

有人可以指导我吗?

谢谢

2 个答案:

答案 0 :(得分:3)

您可以使用https://docs.oracle.com/javase/7/docs/api/javax/xml/bind/DatatypeConverter.html#printHexBinary%28byte%5B%5D%29

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

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);
}

答案 1 :(得分:0)

来自Java文档

  

检索RowId对象通过调用来检索java.sql.RowId对象   在接口ResultSet和中定义的getter方法   CallableStatement。返回的RowId对象是不可变的   可用于后续引荐的唯一对象   行的标识符。以下是调用   ResultSet.getRowId方法:

java.sql.RowId rowId_1 = rs.getRowId(1);

String toString() 返回一个String,它表示由此java.sql.RowId对象指定的SQL ROWID的值。