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 读取txt文本文件中的数据并保存到数据库中源代码,假设txt已有格式,并以","分隔。其中的sql包需要自己去微软官网下载。
在Java应用程序中,序列化用于保存对象的状态以便稍后恢复,或者在网络传输中将对象从一个系统传输到另一个系统。反序列化漏洞则是一个安全问题,攻击者可以通过构造恶意的序列化数据来利用这种漏洞,执行任意代码或...
在数据存储中,我们可以使用序列化机制来将对象转化为 byte 数组,然后将其存储到数据库或文件中。 Java 中将对象转化为 byte 数组的方法是通过序列化机制实现的。序列化机制可以应用于各种领域,并且可以提高系统...
本文将深入探讨如何在Java中利用Spring JDBC将数据库查询结果转换为Map对象。 首先,确保已经引入了Spring JDBC的相关依赖。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml <groupId>org.spring...
XStream对象序列化是一种在Java应用程序中将Java对象转换为XML格式的过程,这主要通过XStream库实现。这个库提供了一种简洁的方式来处理对象到XML的转换,反之亦然,而不需要复杂的配置或对对象进行特定的修改。...
在C#和ASP.NET开发中,有时我们需要将文件存储...以上就是在C#和ASP.NET中将文件保存到数据库的关键步骤和知识点。实际应用时,根据项目需求和数据库类型,可能还需要考虑其他因素,如性能优化、错误处理和日志记录等。
Java 中 Spark 中将对象序列化存储到 HDFS 概述: 在 Spark 应用中,经常会遇到这样一个需求:需要将 Java 对象序列化并存储到 HDFS,尤其是利用 MLlib 计算出来的一些模型,存储到 HDFS 以便模型可以反复利用。在...
Vbs序列化/反序列化Json基类 可直接使用,bug已被我修复 Example: Dim fso, json, str, o, i Set json = New VbsJson Set fso = WScript.CreateObject("Scripting.Filesystemobject") str = fso.OpenTextFile(...
这个过程在接收端或读取数据时发生,例如,从网络接收数据流后,我们需要用`ObjectInputStream`在Java中或相应的解析库在Python中将其还原为原来的对象。 序列化和反序列化对于以下应用场景至关重要: 1. **持久化...
本文将深入探讨如何使用Java编程语言实现从一个数据库中定时自动抽取数据并复制到另一个数据库,以达到数据库间的实时或近实时同步。 首先,我们需要了解基础概念。Java是一种广泛使用的面向对象的编程语言,具有...
在VC++环境中,将C++对象存入数据库并读取是一项常见的任务,这涉及到对象序列化、数据库操作以及数据映射等技术。本教程将详细解释这个过程,并提供一些关键知识点。 首先,对象序列化是将C++对象转换为可存储或...
根据提供的文件信息,我们可以深入探讨如何在Delphi中将文件保存至数据库的相关知识点。下面将详细介绍涉及的关键概念、实现步骤及代码示例。 ### 1. Delphi与数据库交互的基础 #### 1.1 Delphi简介 Delphi 是一种...
在本文中,我们将深入探讨如何使用Java Server Pages (JSP)技术从MySQL数据库中获取数据并将其呈现到网页上。JSP是一种动态网页开发技术,它允许开发者在HTML页面中嵌入Java代码,以实现服务器端的数据处理和交互。 ...
在Android开发中,数据交换和存储常常涉及到对象的序列化和反序列化。这是一个关键的环节,特别是当数据需要通过网络(如Socket)或者蓝牙进行传输时,因为这些通信方式通常要求以二进制格式传输数据。本篇将详细...
4. **引入JDBC驱动**:为了在Java中与MySQL交互,需要添加MySQL JDBC驱动(mysql-connector-java.jar)到项目的类路径中。可以手动下载或者通过Maven或Gradle依赖管理。 ### 二. 查询MySQL 1. **编写Java代码**:...
web项目开发过程中经常遇到用户登陆,退出的问题,根据登陆和退出来操作session的存值和销毁. 但往往很多用户不去点击"退出",而是关闭FF的tab或浏览器(多种浏览器),这就给session的销毁带来了困难.
在VB(Visual Basic)编程中,将Text控件中的数据保存到数据库是一项常见的任务,尤其在用户界面交互和数据管理的场景下。本篇将详细解释如何实现这一过程,涉及的知识点包括VB与数据库的连接、SQL语句的使用以及...
实现`Serializable`接口的类的对象在序列化后可以被反序列化,恢复到原来的对象状态。序列化还可以用于实现分布式系统中的对象复制。 持久化(Persistence)是指数据能够跨会话或跨应用程序周期保持不变的能力。...
3. **数据库表设计**:为了存储Session数据,我们需要在数据库中创建一个表,通常包含以下字段:`session_id`(Session ID)、`session_data`(Session 数据,通常是序列化后的字符串)、`expires`(Session 过期...
使用java把数据库数据导出生成xml文件 使用java把数据库数据导出生成xml文件