永发信息网

关于数据库保存流java流对象

答案:2  悬赏:40  手机版
解决时间 2021-11-11 22:10
关于数据库保存流java流对象
最佳答案
什么》? 哎呀没必要。。
不过可实现的:如下为一个通用的例子:

假设有这么个对象:
import java.io.Serializable;

public class MyObject implements Serializable {

private static final long serialVersionUID = 1L;
private int i;

public int getI() {
return i;
}

public void setI(int i) {
this.i = i;
}
}

//测试 的方法如下
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class test {

public static void main(String[] args) throws IOException,
ClassNotFoundException {

MyObject obj = new MyObject();
obj.setI(4567);
write(Object2Bytes(obj));

// read();
}

public static void write(byte[] b) throws ClassNotFoundException {

System.out.println(b.length);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
try {
Connection con = DriverManager.getConnection("jdbc:odbc:temp");
String sql = "insert into tab values(?)";

PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setBytes(1, b);
pstmt.execute();

pstmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}

public static void read() throws ClassNotFoundException {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
try {
Connection con = DriverManager.getConnection("jdbc:odbc:temp");
String sql = "select * from tab";

PreparedStatement pstmt = con.prepareStatement(sql);
ResultSet res = pstmt.executeQuery();

while (res != null && res.next()) {
byte[] b = res.getBytes("key");
System.out.println(b.length);
MyObject obj = (MyObject) Bytes2Object(b);
System.out.println(obj.getI());
}

pstmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}

// 将对象转换成字节数组
public static byte[] Object2Bytes(Object obj) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
return baos.toByteArray();
}

// 将字节数组转换成为对象
public static Object Bytes2Object(byte[] b) throws IOException,
ClassNotFoundException {

ByteArrayInputStream bais = new ByteArrayInputStream(b);
ObjectInputStream ois = new ObjectInputStream(bais);

Object obj = ois.readObject();
return obj;
}

}
全部回答
你是WEB程序啊。还是应用程序啊?

WEB程序可以用SESSION来保存。
应用程序用不用保存哦。spring 也有类似的功能啊。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
灯具卫浴店黑色的门头做什么颜色的发光字显眼
《房屋所有权保持证》,是以前共有房产才有的
怎么快速的制作表白网页而且能一直访问
LED显示屏应用在指挥中心、控制中心、监控调
16既是16的因数又是32的倍数这句话是对还是错
If you make yourself an ass, don't com
求求这个小女生叫什么
几岁可以上音乐学院!(不算特别的人)
长通驾校(乌鲁木齐新市)地址有知道的么?有点
胆汁酸中哪些属于次级结合胆汁酸:
求初音未来高清美图。
用27.2元正好可以买3千克苹果和2千克橘子把买
给儿子20岁生日祝福语
蜂窝纸板和铝箔板哪个保温更好
115账号一点下载就自动退出咋办
推荐资讯
深蹲现在120公斤做组,有保护130做5个,想冲1
QQ飞车辉煌之路有什么奖励 辉煌之路奖励一览
榆次到荆州从哪里转站最快?最便宜?
开个狗场国家会有补助吗
形容校园整体学风好成语
六合村地址好找么,我有些事要过去,
张魏字艺术签名图片
真心就像狗屁一样,我算是看透,总有一些人把
江门哪里有草地?要干净的,靠近市区的。
开头有编钟声、有女声呜呜、中间有女声用戏腔
《别老母》表达了什么。
上海到苏州黎口有多远
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?