2013-04-05 74 views
0

我有以下函数定义:长转换为原始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的方式存在问题,还是存在于我的检索代码中?

回答

3

看起来你在调用一个不建议使用的构造函数,它另外仅用于byte数组和String。我认为适当的方法是这样的:

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

编辑:如果resultsIterator<RAW>,该while -loop应改为这样:

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

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

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

我的检索代码是一样的吗? – Woot4Moo 2013-04-05 16:12:35

+0

@ Woot4Moo对于您的检索代码,我没有仔细查看,对不起。我删除了我以前的评论。 – 2013-04-05 16:34:15