`
wjacketcn
  • 浏览: 26191 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java中将数据对象序列化后保存到数据库中,并反序列化取出显示

    博客分类:
  • java
阅读更多
java中将数据对象序列化后保存到数据库中,并反序列化取出显示




更具体内容请参照:http://www.ibm.com/developerworks/cn/xml/x-datamineparsephp/index.html


* 向数据库插入一条战斗回放记载

     * @param matchMovie 比赛回放记载

     */

    public int PlayBackGame(MatchMovie matchmove) {

       byte[] buf = null;

       try {

           buf = SerializeUtil.serializeObject(matchmove);

       } catch (IOException e) {

           e.printStackTrace();

       }

       Connection conn = null;

       CallableStatement cstmt = null;

       try {

           conn = DBHelper.getConnection();

           cstmt = conn.prepareCall("{call PlayBackGame(?,?,?,?,?)}");

           cstmt.setInt(1, matchmove.getOrgId1());

           cstmt.setInt(2, matchmove.getOrgId2());

           cstmt.setBytes(3, buf);

           cstmt.setByte(4, (byte) matchmove.getMatchType());

           cstmt.registerOutParameter(5, Types.INTEGER);

           cstmt.executeUpdate();

           if (cstmt.getInt(5) != 0)

              return cstmt.getInt(5);

       } catch (SQLException e) {

           logger.error("DatabaseMgr: PlayBackGame");

           e.printStackTrace();

           return 0;

       } finally {

           DBHelper.close(conn, cstmt, null);

       }

       return 0;

    }



    /**

     * 显示某条回放记载

     * @param backGameId 比赛回放记载ID

     * @return 当前回放记载的完全信息

     */

    public MatchMovie getPlayBackGame(int backGameId) {

       Connection conn = null;

       CallableStatement cstmt = null;

       ResultSet rs = null;

       MatchMovie matchMovie = null;

       byte[] buf = null;

       boolean isFristShow = false;

       int movieId = 0;

       try {

           conn = DBHelper.getConnection();

           cstmt = conn.prepareCall("{call getPlayBackGame(?)}");

           cstmt.setInt(1, backGameId);

           rs = cstmt.executeQuery();

           while (rs.next()) {

              buf = rs.getBytes("process");

              isFristShow = rs.getBoolean("receiveDraw");

              movieId = rs.getInt("pbgId");

           }

           try {

              matchMovie = (MatchMovie) SerializeUtil.deserializeObject(buf);

              matchMovie.setReceiveDraw(isFristShow);

              matchMovie.setMovieId(movieId);

           } catch (IOException e1) {

              e1.printStackTrace();

           } catch (ClassNotFoundException e) {

              e.printStackTrace();

           }

           return matchMovie;

       } catch (SQLException e) {

           logger.error("DatabaseMgr: getPlayBackGame");

           e.printStackTrace();

       } finally {

           DBHelper.close(conn, cstmt, rs);

       }

       return null;

    }





==============



public final class SerializeUtil {

   

    /** 序列化对象

     * @throws IOException */

    public static byte[] serializeObject(Object object) throws IOException{

       ByteArrayOutputStream saos=new ByteArrayOutputStream();

       ObjectOutputStream oos=new ObjectOutputStream(saos);

       oos.writeObject(object);

       oos.flush();

       return saos.toByteArray();

    }

   

    /** 反序列化对象

     * @throws IOException

     * @throws ClassNotFoundException */

    public static Object deserializeObject(byte[]buf) throws IOException, ClassNotFoundException{

       Object object=null;

       ByteArrayInputStream sais=new ByteArrayInputStream(buf);

       ObjectInputStream ois = new ObjectInputStream(sais);

       object=(MatchMovie) ois.readObject();

       return object;

    }

}
分享到:
评论

相关推荐

    java源码包---java 源码 大量 实例

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    java源码包3

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    java源码包2

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    java源码包4

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    memcached1

    然后再取出来,并进行名称的修改,然后我们再取这个对象,我们再看其名称,发现修改的对象并不是缓存中的对象,而是通过序列化过来的一个实例对象,这样我们就无须担心对原生类的无意修改导致缓存数据失效了,呵呵~~...

Global site tag (gtag.js) - Google Analytics