jnative的内存取值一直出错

chendeyunhuangjian 2011-09-15 03:58:51
我从内存里取不出值,用byte[] bb=pt1.getMemory().报错,请高手们帮我看看
public static void main(String[] args) throws SQLException, IOException,
NativeException, IllegalAccessException {
String sql = "select * from tb_all_result_save where id=?";
Connection conn = BaseDao.getConnection();
PreparedStatement pst = null;
ResultSet rs = null;
// String strName=null;
pst = conn.prepareStatement(sql);
pst.setInt(1, 11527);
rs = pst.executeQuery();
while (rs.next()) {
InputStream in = rs.getBinaryStream("resultinfo");
byte[] buf = new byte[1024 * 150];
in.read(buf);

byte[] b = new byte[1024];

JNative jn = new JNative("SysEnv", "ParseStdHead");

Pointer pt1 = new Pointer(MemoryBlockFactory
.createMemoryBlock(1024 * 200));
Pointer pt2 = new Pointer(MemoryBlockFactory
.createMemoryBlock(1024 * 200));
pt1.setMemory(buf);
pt2.setMemory(b);
jn.setRetVal(Type.INT);
int i = 0;
jn.setParameter(i++, pt1);
jn.setParameter(i++, pt2);

jn.invoke();

pt1.dispose();
pt2.dispose();
int result = Integer.parseInt(jn.getRetVal());
if(result==-1){
System.out.println("内存错误");
}else{

byte[] bb = pt1.getMemory();//就是在这里报错,返回一个指针的byte[]类型,

谢谢
if(bb.length==0){
System.out.println("错误");
}
System.out.println(bb+"============");
byte[] hh = new byte[1024];
for (int j = 0; j < bb.length; j++) {
if (bb[j] != 0) {
hh[j] = bb[j];
}
}

String mm=null;
for(int h=0;h<hh.length;h++){
mm+=hh[h];
}
System.out.println(mm);
}
}
}

}
...全文
67 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
安心逍遥 2011-09-15
  • 打赏
  • 举报
回复
帮顶一下,不懂

祝楼主好运
chendeyunhuangjian 2011-09-15
  • 打赏
  • 举报
回复
有区别吗,任然报错,请各位高手帮我解决一下
xuehuashijie 2011-09-15
  • 打赏
  • 举报
回复
pt1.dispose()之后调用pt1.getMemory() 嘿嘿!!!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧