我定义了以下函数:
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
的方式上,还是出现在我的检索代码中?
最佳答案
看来您正在调用一个已弃用的构造函数,该构造函数还适用于 byte
数组和String
仅此而已。我认为合适的方式是这样的:
toReturn[i] = RAW.newRAW(Long.toHexString(toConvert[i]));
编辑:如果 results
是 Iterator<RAW>
,while
-loop 应更改为:
while(results.hasNext()) {
String s = new String(results.next().getBytes());
}
如果results
是 RAW
-array,你应该这样做:
for(RAW result : results) {
String s = new String(result.getBytes());
}
关于java - 将长整型转换为原始 jdbc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15838263/