public boolean addMMSCardTemplate(String title, String content, int owner,
String addTime) throws Exception{
Connection con = null;
long id = 1L;
PreparedStatement pst = null;
boolean ret = false;
String date = CommonFun.getDateTimeString();
ResultSet rs = null;
try
{
con = this.dbPool.getConnection();
con.setAutoCommit(false);
pst = con.prepareStatement("SELECT T_MMSCADETEMPLATE_SEQ.NEXTVAL from dual");
rs = pst.executeQuery();
//获取数据库中创建的序列
if(rs.next()){
id = rs.getLong("nextval");
}
String sql = "insert into t_mmscardtemplate (id, title,content,owner,addtime) values (?,?,?,?,?)";
pst = con.prepareStatement (sql);
pst.setLong(1, id);
pst.setString(2, title);
pst.setBlob(3, BLOB.empty_lob());
pst.setInt(4, owner);
pst.setString(5, date);
pst.executeUpdate();
pst = con.prepareStatement("select content from t_mmscardtemplate where id = ? for update");
pst.setLong(1, id);
rs = pst.executeQuery();
BLOB blob = null;
byte[] c = content.getBytes();
while(rs.next()){
blob = (BLOB) rs.getBlob("content");
final java.io.BufferedOutputStream out = new java.io.BufferedOutputStream(
blob.getBinaryOutputStream());
out.write(c, 0, c.length);
out.close();
}
pst = con.prepareStatement("update t_mmscardtemplate set content = ? where id = ?");
pst.setBlob(1, blob);
pst.setLong(2, id);
pst.executeUpdate();
con.commit();
ret = true;
}
catch (SQLException e)
{
con.rollback();
throw e;
}
finally
{
con.setAutoCommit(true);
DBTools.close(con, pst, rs);
}
return ret;
}
以流的方式写入Blob或Clob,前者二进制方式,后者以字符方式,先插空blob后update。其中涉及到sql的长度问题等问题。
public MMSCardTemplatePO getMMSCardTemplateById(int id) throws Exception
{
PreparedStatement pst = null;
Connection con = null;
ResultSet rs = null;
MMSCardTemplatePO mcPO = null;
String sql = "select * from t_mmscardtemplate where id = ?";
try{
con = this.dbPool.getConnection();
pst = con.prepareStatement(sql);
pst.setInt(1, id);
rs = pst.executeQuery();
mcPO = new MMSCardTemplatePO();
while(rs.next()){
mcPO.setId(rs.getInt("id"));
BLOB blob = (BLOB) rs.getBlob("content");
mcPO.setContent(new String(blob.getBytes(1, (int)blob.length())));
mcPO.setAddTime(rs.getString("addtime"));
mcPO.setOwner(rs.getString("owner"));
mcPO.setTitle(rs.getString("title"));
}
} catch (SQLException e)
{
throw e;
}
finally
{
DBTools.close(con, pst, rs);
}
return mcPO;
}
分享到:
相关推荐
- 此方法用于从数据库中读取特定记录中的 BLOB 数据(本例中为图片),并将其返回给客户端。 - 首先,通过 `ConnBean.getConn()` 获取数据库连接。 - 接着,执行 SQL 查询语句,该语句根据传入的 `documentno` ...
随后,通过读取本地文件(本例中是"oraclejdbc.jar")的数据,将其写入到BLOB中。这里值得注意的是,写入数据前后的事务控制,使用`conn.setAutoCommit(false)`关闭自动提交,确保所有操作作为一个完整的事务处理,...
本例中,我们讨论如何将DB2数据库中的BLOB数据类型复制到Oracle数据库。 1. **BLOB与CLOB数据类型**: BLOB(Binary Large Object)存储二进制大对象,如图像、音频或视频文件。CLOB(Character Large Object)...
Blob在计算机科学中通常代表Binary Large Object,用于存储大块非结构化的数据,如图像、音频、视频或者在本例中提到的PDF文档的二进制内容。在Java编程环境中,Blob对象是JDBC API的一部分,用于存储和检索大型二...
以SQL Server为例: ```java Connection conn = ... // 连接数据库 SQLServerBlob blob = new SQLServerBlob(imageBytes); ``` 3. 准备SQL语句:创建一个PreparedStatement,设置Blob参数。例如,插入一个包含图片...
在Java编程中,有时我们需要将图像数据存储到数据库中,然后能够从数据库中读取出来。这个过程通常涉及到Blob和Clob数据类型,它们是Java中的两种...在本例中,我们主要讨论了Blob类型,因为它是存储图像数据的关键。
在本例中,我们假设已经有一个名为`images`的表,其中包含一个名为`image_data`的BLOB字段。使用`sqlite3_prepare_v2()`函数编译SQL语句,如下所示: ```cpp const char *sql = "INSERT INTO images (image_data) ...
Blob对象是用于存储二进制数据的,比如图片、音频文件或在本例中,Excel文件的数据。Blob.js提供了便利的方法来构建、合并和分割Blob,这对于处理来自不同源的数据尤其有用。例如,你可以将多个数据片段合并成一个大...
虽然主要用于存储文本,但在本例中,由于图片可以被转换为字符串形式(例如Base64编码),所以可以用来存储图片。将图片转换为Base64字符串后,可以将其存储为`CLOB`,然后在读取时再解码回图片格式。 2. **BLOB...
以`Users.hbm.xml`为例,假设我们有一个`Users`实体类,其中有一个`profileImage`字段作为BLOB类型,一个`bio`字段作为CLOB类型,映射可能会这样写: ```xml <!-- 其他字段 --> ...
这里以SQL Server为例,展示如何创建一个名为`userinfo`的表,该表包含以下字段:`id`、`username`、`old`以及`photo`,其中`photo`字段用于存储二进制数据。 ```sql CREATE TABLE [dbo].[userphoto]( [id] [int] ...
在本例中,我们需要创建一个实体类来表示存储图片信息的数据模型,该类中有一个BLOB类型的字段用于存储图片数据。 ```java @Entity public class ImageEntity { @Id @GeneratedValue(strategy = GenerationType....
这里以模拟将10条记录分成两批导出为例,具体命令如下: 1. **导出第1批(ID 1-5)** ```bash expdp "/as sysdba" dumpfile=IMAGE_LOB1.dmp logfile=IMAGE_LOB_exp1.log directory=DATAPATH tables=testuser....
本文以SQL Server数据库和***开发环境为例,探讨了.NET数据库BLOB数据处理技术的应用,并提出了有效的解决方案。 1. 关键技术和概念解析 文章首先介绍了BLOB数据的概念,BLOB是存储在数据库中的一种大容量二进制...
这里以MySQL为例,导入相关驱动,然后建立连接: ```java Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_db", "username", "password...
本文将以一款优秀的Bootloader Blob为例,详细讲解它的运行原理以及在S3C44B0通用处理器上的移植过程,为在嵌入式设备上的后续软件开发打下基础 。1 Blob简介 Blob是Boot Loader Object的缩写,是一款功能强大的...
文中以Sybase数据库为例,描述了如何通过利用其内在机制来实现自动安装和更新功能,展示了具体实现步骤和方法。 9. 文档结构:文档分为摘要、引言、系统结构、算法实现等部分。摘要部分简要介绍了研究的背景、目的...
本篇文章将深入探讨OpenCV 2.4.11版本中Blob检测的实现,并以“video_blob”为例,讲解如何处理一系列图像并输出最大亮点的坐标。 首先,我们需要理解OpenCV的Blob检测原理。Blob检测通常包括图像预处理、区域生长...
在本例中,查询从`t_rk_baseinfo_blob`表中选取前10行,并获取ROW_ID和photo列。通过`PreparedStatement`执行SQL,获取`ResultSet`。 对于`ResultSet`中的每一行,我们获取ROW_ID和BLOB数据。BLOB对象可以通过调用`...
本例展示如何使用ADO Stream对象将SQL Server表中的Image数据导出到硬盘文件。具体步骤如下: 1. **创建VB项目**:首先创建一个新的标准EXE Visual Basic项目。 2. **添加ADO引用**:在项目的“引用”设置中,添加...