java - 将长整型转换为原始 jdbc

标签 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 的方式上,还是出现在我的检索代码中?

最佳答案

看来您正在调用一个已弃用的构造函数,该构造函数还适用于 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 -array,你应该这样做:

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

关于java - 将长整型转换为原始 jdbc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15838263/

相关文章:

java - 如何获取java中抛出的IOException的文件名?

MySQL 列间搜索

oracle - 如何在oracle中 "re-validate"外部约束

windows - 无法在 Windows 环境中启动 OracleXNTNSListener

sql - DROP、TRUNCATE 和 DELETE 之间的区别和最佳用途是什么?它们可以回滚吗?

java - 从字段元素获取包名称和参数化类型 - 注释处理器

Java applet 和他们的 future ?

mysql - 为公众提供一种在数据库上运行 SELECT 查询的方法有多危险?

java - 如何在 switch-case 中使用 char 作为 case?

mysql - 连接两个表,结果显示在表 2 的 min() 字段上