`
hekui1016
  • 浏览: 51113 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring Sample里面的ImageDB问题

 
阅读更多
看到Spring文件夹里面的ImageDB应用例子,就想跑起来看看效果怎样。
如果使用Mysql数据库,修改一下DDL里面的content字段为LONGBLOB就可以很方便地将图片存储在MySql数据库中。
(MySQL的四种BLOB类型
类型  大小(单位:字节)
TinyBlob  最大 255B
Blob  最大 65K
MediumBlob  最大 16M
LongBlob  最大 4G

在Oracle数据库(我用的是Oracle 11g XE)中却不是成功保存图片,一点击上传应用就卡住了,在Eclipse的高度窗口下,出现在很多Daemon进程。(一时找不出原因,我想可能是Oracle数据库版本以及Spring2.5对BLOB的一些兼容性上的问题。非常欢迎高人指正这个猜测)
于是我修改了一下存储图片的方法为如下,就可正常地在Oracle中存储图片了。
@Transactional
	public void storeImage(final String name, final InputStream contentStream,
			final int contentLength, final String description)
			throws DataAccessException {
		if (lobHandler instanceof OracleLobHandler) {
			try {

				PreparedStatement ptst = getConnection()
						.prepareStatement(
								"INSERT INTO IMAGEDB VALUES(? , EMPTY_BLOB() , EMPTY_CLOB())");
				ptst.setString(1, name);
				ptst.executeUpdate();
				// Execute SQL statement
				ptst = getConnection()
						.prepareStatement(
								"SELECT CONTENT ,DESCRIPTION FROM IMAGEDB WHERE IMAGE_NAME = ? FOR UPDATE");
				ptst.setString(1, name);

				ResultSet rs = ptst.executeQuery();
				rs.next();
				Blob contentBlob = rs.getBlob(1);
				OutputStream blobOutputStream = ((BLOB) contentBlob)
						.getBinaryOutputStream();
				FileCopyUtils.copy(contentStream, blobOutputStream);

				Clob descClob = rs.getClob(2);
				Writer clobWriter = ((oracle.sql.CLOB) descClob)
						.getCharacterOutputStream();
				clobWriter.write(description);
				clobWriter.close();

				contentStream.close();
				blobOutputStream.close();
				getConnection().commit();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} else {
			getJdbcTemplate()
					.execute(
							"INSERT INTO imagedb (image_name, content, description) VALUES (?, ?, ?)",
							new AbstractLobCreatingPreparedStatementCallback(
									this.lobHandler) {
								protected void setValues(PreparedStatement ps,
										LobCreator lobCreator)
										throws SQLException {
									ps.setString(1, name);
									lobCreator.setBlobAsBinaryStream(ps, 2,
											contentStream, contentLength);
									lobCreator.setClobAsString(ps, 3,
											description);
								}
							});
		}
	}
分享到:
评论

相关推荐

    spring2.5.6示例 imagedb

    标题“spring2.5.6示例 imagedb”指的是一个关于Spring框架2.5.6版本的应用实例,其中可能包含了一个名为“imagedb”的数据库管理或图像存储相关的项目。这个实例可能用来演示如何在Spring 2.5.6中配置、管理和操作...

    spring2.0 sample

    `spring2.0 sample 之 imagedb`可能涉及到数据库操作,Spring的JDBC抽象层或ORM集成如Hibernate、JPA等。Spring通过声明式事务管理简化了数据库操作,使得开发者无需在代码中显式地开始和提交事务。 `spring2.0 ...

    ImageDB.rar

    【标题】"ImageDB.rar" 是一个压缩包文件,很可能包含了一个与图像数据库相关的项目或应用。从文件名来看,这个项目可能涉及到两种不同的数据库系统——SQL和Access,用于存储和管理图像数据。 【描述】虽然描述...

    imagedb图片的上传与下载

    1,小例子使用功能强大的Spring框架作为项目的管理框架。 2,数据层使用JDBC,并使用Spring提供的LobHandler来处理大个资源,如图片等。 3,项目中集成使用quartz来进行调度。 4,Web层使用Struts2实成文件的上传与...

    spring3.0MVC注解(附实例).

    标题与描述中的关键词“spring3.0MVC注解”指向了Spring框架中关于MVC架构的注解驱动功能,这是Spring3.0版本引入的重要特性之一,旨在简化Web应用程序的开发过程,使得开发者能够更加专注于业务逻辑而非框架本身。...

    ImageDB_RPT

    8. **错误处理和调试**:使用console.log、debugger语句或者像Sentry这样的错误追踪服务,可以帮助开发者定位并解决运行时的问题。 9. **测试**:为了保证代码质量,项目可能包含了单元测试(如Jest、Mocha)和集成...

    ImageDB v1.122

    ImageDB支持这些格式,意味着用户可以在同一平台上处理各种类型的图像,无需担心格式转换的问题。此外,"灵活、分级管理"这一特性意味着用户可以根据需要创建不同的目录结构、子目录和标签,对图片进行分类,以便...

    spring mvc学习文档

    【Spring MVC 学习文档】 Spring MVC 是 Spring 框架的一个模块,专门用于构建 Web 应用程序。它提供了一种模型-视图-控制器(MVC)架构,简化了开发过程,允许开发者将业务逻辑与表现层分离。在这个学习文档中,...

    Spring mvc 3 注解精华.docx

    另一个示例是imagedb,它是一个基于注解的Web MVC应用程序,专注于无状态的multi-action控制器和多段文件上传处理,该示例位于“samples/imagedb”目录。 要使Spring MVC 3支持注解,关键在于DispatcherServlet的...

    ImageDB图片数据库、支持各种格式的图片、JPEG、TIFF、GIF、PSD,提供灵活、分级管理.zip

    ImageDB是一款专为管理和存储各种图像格式设计的数据库系统,如JPEG、TIFF、GIF和PSD等。它提供了高效、灵活且分级的管理方案,使得用户能够方便地组织和检索大量的图像资源。 首先,让我们深入了解ImageDB的核心...

    spring3.0MVC

    另一个示例应用 imagedb 则展示了无状态 multi-action 控制器以及多段文件上传的处理,位于 samples/imagedb 目录下。 Spring 3.0 MVC 的注解支持主要依赖于 `@RequestMapping`,它可以在类级别和方法级别使用。类...

    spring3.0MVC注解(附实例).pdf

    Spring 3.0 的 MVC 框架引入了大量的注解,极大地简化了Web应用程序的开发。这些注解允许开发者在...结合实际的示例项目,如PetClinic和imagedb,学习和掌握Spring 3.0 MVC的注解将有助于构建高效、可维护的Web应用。

    Python库 | imagedb-0.1.0-py2.py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:imagedb-0.1.0-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    ImageDB:用户上传的、用户可浏览的图像的数据库提要。 使用 Node.js、Express、Socket.io 等、MongoJS 和 MongoDB 制作

    图像数据库请注意ImageDB 目前不适合生产。 目前,它纯粹用于教育和测试目的。安装请确保已安装 Node.js 和 MongoDB,然后输入以下命令。 git clone ...

    imagedb:Pharmbio显微镜图像的图像数据库

    AROS图像,项目,数据,元数据和实验室自动化系统数据库。 当前,此存储库包含实际的postgres数据库和Web-GUI Image Viewer,但很快将分为两个单独的存储库,一个用于数据库,另一个用于Web接口。...

    android数据Bitmap数据的过程

    ### Android中Bitmap数据存储与读取过程详解 #### 一、引言 在Android开发过程中,经常需要处理图片数据,而`Bitmap`类是用于在内存中存储位图的...需要注意的是,在实际项目中还需要考虑到性能优化和异常处理等问题。

Global site tag (gtag.js) - Google Analytics