0

我定义了以下函数:

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我的检索代码中的问题?

4

1 回答 1

3

看来您正在调用已弃用的构造函数,该构造函数还仅适用于byte数组和Strings。我相信适当的方式是这样的:

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

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

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

如果resultsRAW-array,你应该这样做:

for(RAW result : results) {
    String s = new String(result.getBytes());
}
于 2013-04-05T16:11:58.613 回答