`

更新DB上的大字段

    博客分类:
  • JDBC
 
阅读更多
long updateDnRepositoryContent(long fileId, byte[] content) throws Exception {
		ResultSet rs = null;
		String sql = "";
		PreparedStatement statement = null;

		try {

			// sql =
			// "UPDATE USR_DNREPOSITORY SET FILE_CONTENT=?,UPLOADDATE=SYSDATE,UPLOADUSER=? WHERE FILEID=?";
			sql = "SELECT FILE_CONTENT FROM USR_DNREPOSITORY WHERE FILEID=? for update";

			// ********** end
			logger.info("updateDnRepositoryContent sql is: " + sql);

			statement = connection.prepareStatement(sql);

			statement.setLong(1, fileId);
			rs = statement.executeQuery();
			if (rs.next()) {
				// **得到BLOB字段
				Blob blob = rs.getBlob(1);
				// 获取向blob写入二进制数据的输出流
				// 1为起始字节位置
				OutputStream os = blob.setBinaryStream(1);
				os.write(content);
				os.close();
			}

		} catch (Exception sqle) {
			throw new SQLException(sqle.getMessage() + " - [ " + sql + " ]");
		} finally {
			if (rs != null)
				rs.close();
			if (statement != null)
				statement.close();
		}

		return fileId;
	}

 也可以直接update bytes 数组,如:

public void updateFileById(String fileId, byte[] contentBytes) throws Exception {
		String sql = "";
		PreparedStatement statement = null;

		try {
			sql = "update USR_DNREPOSITORY set FILE_CONTENT = ? WHERE FILEID=?";

			statement = connection.prepareStatement(sql);

			statement.setBytes(1, contentBytes);
			statement.setString(2, fileId);
		
			statement.executeUpdate();

		} catch (Exception sqle) {
			throw new SQLException(sqle.getMessage() + " - [ " + sql + " ]");
		} finally {
			if (statement != null)
				statement.close();
		}
		
	}

 

分享到:
评论

相关推荐

    ORACLE数据库中插入大字段数据的解决方法

    当插入或更新包含大字段的数据时,ORACLE会采用不同的策略以优化存储和性能。 1. **LOB存储模式**: - **临时LOB**:数据存放在内存中,直到事务结束才写入磁盘,适合短时操作。 - **缓存LOB**:数据存储在数据库...

    DB2到GreenPlum/PostgreSQL的转换指南

    - **LOB类型**:DB2支持`BLOB`、`CLOB`等大型对象类型,而GreenPlum/PostgreSQL也支持类似类型,但在使用上可能存在细微差别。 - **XML类型**:DB2支持`XML`类型,而GreenPlum/PostgreSQL也支持XML数据类型的存储,...

    数据库读取clob字段

    1. **数据库连接**:首先通过调用`Global_BS.uf_setdb()`方法设置数据库连接参数,并通过`Global_BS.uf_getSvcDB()`和`lo_db.uf_Open()`获取数据库连接。 2. **执行查询**:使用`Statement`执行SQL查询语句,其中`...

    DB2 Blog字段联机备份数据丢失问题处理

    DB2 Blog字段联机备份数据丢失问题处理

    db2数据迁移

    在处理包含大字段的数据时,需要特别注意。例如,使用 IXF 格式处理大字段: ``` export to c:\data\printxml.ixf of ixf lobs to c:\data\lob modified by lobsinfile select * from mibs.printxml; ``` 3. **...

    PetaPoco:适用于.NET的微型ORM

    db.Query("SELECT * FROM articles"); //直接SQL语句 db.Page(1, 20, "SELECT * FROM articles WHERE category=@0 ORDER BY date_posted DESC", "coolstuff"); //分页 // Insert a record var a=new article(); ...

    数据库比较工具 v3.5

    2、提供方便快捷的数据库浏览,支持可视化复合条件的查询,特别是查看表中大字段,提供导出多种格式(EXCEL、xml、TXT、SQL脚本)的功能; 3、统计库中所有表的记录数,分析各表的数据。 4、增加大字段(TEXT)的...

    海量订单的DB技术优化实践.pptx

    - **SQL优化**:避免不必要的大字段,减少网络传输,降低响应时间(RT)。 - **参数调整**:关闭死锁检测,动态调整数据落盘策略,以减少不必要的开销。 - **Proxy层优化**: - **扩容Proxy实例**:增加Proxy...

    Sqlite大对象字段读写及数据流的解压缩

    SQLiteConnection conn = new SQLiteConnection("Data Source=mydatabase.db;Version=3;"); conn.Open(); // 创建命令 SQLiteCommand cmd = new SQLiteCommand(conn); // 插入数据 byte[] imageData = File....

    数据迁移的方法介绍

    5. **大字段迁移**:BLOB和LONG字段的迁移,可通过DB2迁移工具或编写INSERT脚本实现。 6. **同义词迁移**:需要编写SQL脚本来创建同义词。 7. **序列迁移**:DB2序列有独立和嵌入两种形式,迁移时注意处理ORACLE序列...

    Oracle 超大文件的保存和读取

    在Oracle数据库存储超大文件时、以流的方式分段读取和保存,避免内存溢出。本工具类提供两个方法: 1、读取文件保存到Oracle数据库Blob字段(支持超大文件) 2、从数据库中读出大字段到文件中(分块读取)

    ADO数据库.pdf

    1. **数据流模型**:ADO使用流(Stream)模型,可以高效地处理大量数据,如读取或写入大字段。 2. **异步操作**:ADO支持异步执行命令,这样在等待数据库响应时,应用程序可以继续执行其他任务。 3. **错误处理**...

    Adminers v1.1.6.zip

    4:支持所有数据类型,包括大字段。 5:能够批量执行SQL语句。 6:支持将数据,表结构,视图导成SQL或CSV。 7:能够外键关联打印数据库概要。 8:能够查看进程和关闭进程。 9:能够查看用户和权限并修改。 10...

    你不知道的JDBC高级应用

    3.特殊类型(date--日期,clob--大字段,blob--二进制) 的操作. 4.元数据(MetaData)的操作:包括 parameter , DB , ResultSet的元数据,配合反射,大幅度提升程序的灵活性. 5.储存过程和CRUD的操作,获得Statement可以添加...

    数据库开发规范

    - 单表字段数不超过30个,超过需考虑分表,遵循冷热数据、大字段分离原则。 - 控制单表数据量在1000万以内,字段较多的大表控制在500万以内。 - 不推荐使用外键,以提升性能。 4. **索引策略** - 索引命名有...

    jbpm+ssh整合

    7. **处理大字段问题**:由于jbpm可能包含大字段如字符串,需要配置string-max,以适应Hibernate的限制。 8. **配置filter**:配置configration和template过滤器,确保流程定义的正确加载和存储。 9. **编写人机...

    Android代码-同文安卓輸入法平臺

    支持unicode ext-A/B/C/D大字庫方言正字 自定方案 參考碼表格式說明,編寫自定義方案 使用trime-tool生成trime.db,放到assests目錄下,重新編譯生成新apk 使用Apktool解包替換trime.db,並打包成新apk 從設置中導...

    PyMySQL-master.zip

    不过,你可以通过设置`charset='binary'`来优化大字段(如BLOB)的传输速度。 总的来说,PyMySQL作为Python连接MySQL数据库的工具,凭借其轻量级、纯Python实现和对DB-API的兼容性,成为了开发者在离线环境下的首选...

    MS SQL Server中IMAGE类型数据的存取方法 (1).pdf

    在实际应用中,例如在开发钢铁企业的“穿孔机组故障诊断及状态监测系统”数据库模块时,可能遇到大字节数据,如超长的二进制诊断信息,此时就必须借助IMAGE类型和相应的存取策略。 总的来说,处理MS SQL Server中的...

    DBX260中文说明书

    上一页(PREVIOUS 260GE)-翻至当前所选效果菜单的上一页。 下一页(NEXT 260GE)-翻至当前所有选效果菜单的下一页。 EQ-选择EQ效果菜单。按动此钮将在各种EQ模式中滚动。 XOVER-选择分频菜单。按动它将在各种分频器中...

Global site tag (gtag.js) - Google Analytics