我定义了以下功能:
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
的方式或我的检索代码中的问题是什么?
答案 0 :(得分:3)
您似乎正在调用一个已弃用的构造函数,该构造函数仅用于byte
数组和String
。我认为适当的方式是这样的:
toReturn[i] = RAW.newRAW(Long.toHexString(toConvert[i]));
编辑:如果results
是Iterator<RAW>
,则while
- 循环应更改为:
while(results.hasNext()) {
String s = new String(results.next().getBytes());
}
如果results
是RAW
- 数组,您应该这样做:
for(RAW result : results) {
String s = new String(result.getBytes());
}