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
谁知道这是为什么?
另求正确操作的方法,高手请指教 展开
bb.position(0);
bb.putInt(1);
把bb存入blob字段中, 用plsql直接看blob字段中的值是错误的
正确的应该是0001 0000 0000 0000....
可是我的确实0000 0000 0000 0000 .... 0100
谁知道这是为什么?
另求正确操作的方法,高手请指教 展开
2个回答
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
以下是我针对你的问题作的一个例子,你执行一下。
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询