将Long转换为Raw jdbc

时间:2013-04-05 15:51:59

标签: java sql oracle jdbc

我定义了以下功能:

private RAW[] longToRaw(long[] toConvert) throws SQLException  
{  
     final RAW[] toReturn = new RAW(toConvert.length);  
     for(int i = 0; i <toReturn.length;i++)
     {
          toReturn[i] = new RAW(toConvert[i]);
     }  
}  

客户传递给我long[],这不会改变。我所说的Oracle数据库将数据存储为RAW。数据似乎已正确保留。但是,在检索时,我得到了难以理解的结果。

检索代码:

...
while(results.next())  
{    
     String s = new String(results.getBytes(1));
}    
...

这不会提供传递到数据库中的所需长值。我该如何解决这个问题?也就是说,我将long转换为RAW的方式或我的检索代码中的问题是什么?

1 个答案:

答案 0 :(得分:3)

您似乎正在调用一个已弃用的构造函数,该构造函数仅用于byte数组和String。我认为适当的方式是这样的:

toReturn[i] = RAW.newRAW(Long.toHexString(toConvert[i]));

编辑:如果resultsIterator<RAW>,则while - 循环应更改为:

while(results.hasNext()) {
    String s = new String(results.next().getBytes());
}

如果resultsRAW - 数组,您应该这样做:

for(RAW result : results) {
    String s = new String(result.getBytes());
}