Java中向Oracle数据库Blob字段中插入byte[]相关问题, 高手来

ByteBufferbb=ByteBuffer.allocate(10836);bb.position(0);bb.putInt(1);把bb存入blob字段中,用pls... ByteBuffer bb = ByteBuffer.allocate(10836);
bb.position(0);
bb.putInt(1);

把bb存入blob字段中, 用plsql直接看blob字段中的值是错误的
正确的应该是0001 0000 0000 0000....
可是我的确实0000 0000 0000 0000 .... 0100
谁知道这是为什么?
另求正确操作的方法,高手请指教
展开
 我来答
匿名用户
2013-04-30
展开全部
你的问题和 blob 没有关系。在ByteBuffer 里存的数字就是你在 plsql 看到的那样。请仔细理解 ByteBuffer。

以下是我针对你的问题作的一个例子,你执行一下。

import java.nio.ByteBuffer;

public class TestByteBuffer {

public static void main(String[] args) {

ByteBuffer bb = ByteBuffer.allocate(10836);
bb.position(0);
bb.putInt(1);

System.out.println("赋值后buff的状态 :"+bb);
byte [] b1 = bb.array();
//以下打印的数组不是真正的数值,只是开辟空间后的一个排列顺序
for (int i = 0; i < b1.length; i++) {
System.out.print(b1[i]);
}
System.out.println();

bb.flip();
System.out.println("反转后buff的状态 :"+bb);
byte [] b2 = new byte [bb.remaining()];
//b2中的数字才是buff中真实的数字,千万不要混淆。
bb.get(b2);
System.out.print("从 buff 中取到的数值 :");
for (int i = 0; i < b2.length; i++) {
System.out.print(b2[i]);
}
System.out.println();
System.out.println("取值后buff的状态 :"+bb);
}

} 答案补充 按照你的意思,我写了一个类,已经实现了你的要求。可是我现在最多只能补充回答 500 个字,没有办法发给你。
我已经发到以下地址了,你去看一下吧,应该可以的。
http://blog.sina.com.cn/s/blog_4e00ee550100buz5.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-30
展开全部
yq4qu72w
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式