- 浏览: 203454 次
- 性别:
- 来自: 芜湖
文章分类
- 全部博客 (139)
- 软件 (0)
- Pattern (6)
- CSDN导入 (19)
- Struts (3)
- [网站分类]1.网站首页原创 (27)
- [网站分类]6.转载区 (4)
- Hibernate (10)
- Error (8)
- [网站分类]2.Java新手区 (20)
- Java (8)
- [网站分类]4.其他技术区 (10)
- Web (1)
- C++ (2)
- Algorithm (4)
- Linux (2)
- Skill (1)
- Tech (2)
- Note (2)
- [网站分类]3.非技术区 (1)
- Database (1)
- Winty (7)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (0)
最新评论
-
haohao-xuexi02:
很不错哦。
O'Reilly cos上传组件的使用(1/3) - 上传文件 -
yoin528:
useUnicode=true&charact ...
[原]向MySQL数据库插入Blob数据的问题 -
xiaoqing20:
下载来看看!呵呵
[原]Struts2类型转换 -
xiaoqing20:
[原]Struts2类型转换
[标题]:向MySQL数据库插入Blob数据的问题
[时间]:2009-6-3
[摘要]:在使用Hibernate向数据库插入Blob二进制数据时,发生如下错误:SQL Error: 1064, SQLState: 42000 。You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '??^5b??08""199G?"0Px8=?ü??Y??ó??l%P?[
¨???ó`-??F????:???S?a?@??Zu??' at line 1
[关键字]:MySQL、Blob、图片、image、java、Hibernate、Clob、&
[环境]:5.1.34-community MySQL Community Server (GPL),Hibernate 3.2.5
[作者]:Winty (wintys@gmail.com) http://www.blogjava.net/wintys
[错误]:
使用Hibernate向数据库插入Blob二进制数据,程序如下:
[原因]:
搜索了一下,错误原因可能为:"在定义字段时,不要和MYSQL的保留字段有相同的"。
检查了一下表中的字段名,没有发现问题:
如果把Blob相关的程序注释了,Clob数据能够正常写入。原因当然出在Blob数据的写入程序中。后来发现,把Blob写入的图片数据换成文本,却可以正常写入。可见,是二进制数据的编码问题。
[解决]:
将原来的数据连接:
Error parsing XML: /hibernate.cfg.xml(12) The reference to entity "characterEncoding" must end with the ';' delimiter.
也可以直接把&修改为&
即:
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf-8
[参考资料]:
Mysql 中的blob相关问题 : http://fenghuang.iteye.com/blog/363931
[时间]:2009-6-3
[摘要]:在使用Hibernate向数据库插入Blob二进制数据时,发生如下错误:SQL Error: 1064, SQLState: 42000 。You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '??^5b??08""199G?"0Px8=?ü??Y??ó??l%P?[
¨???ó`-??F????:???S?a?@??Zu??' at line 1
[关键字]:MySQL、Blob、图片、image、java、Hibernate、Clob、&
[环境]:5.1.34-community MySQL Community Server (GPL),Hibernate 3.2.5
[作者]:Winty (wintys@gmail.com) http://www.blogjava.net/wintys
[错误]:
使用Hibernate向数据库插入Blob二进制数据,程序如下:
public void insert() {
User user = new User();
Transaction tc = null;
try{
Session session = HibernateUtil.getSession();
tc = session.beginTransaction();
user.setName("The Name");
FileInputStream fin = new FileInputStream("rc/redheart.gif");
Blob image = Hibernate.createBlob(fin);
user.setImage(image);
File file = new File("rc/news.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
Clob info = Hibernate.createClob(br , (int)file.length());
user.setInfo(info);
session.save(user);
tc.commit();
}catch(Exception e){
if(tc != null){
tc.rollback();
}
System.err.println(e.getMessage());
}finally{
HibernateUtil.closeSession();
}
}
发生如下错误:User user = new User();
Transaction tc = null;
try{
Session session = HibernateUtil.getSession();
tc = session.beginTransaction();
user.setName("The Name");
FileInputStream fin = new FileInputStream("rc/redheart.gif");
Blob image = Hibernate.createBlob(fin);
user.setImage(image);
File file = new File("rc/news.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
Clob info = Hibernate.createClob(br , (int)file.length());
user.setInfo(info);
session.save(user);
tc.commit();
}catch(Exception e){
if(tc != null){
tc.rollback();
}
System.err.println(e.getMessage());
}finally{
HibernateUtil.closeSession();
}
}
Hibernate: insert into db.myblobclob (name, image, info, id) values (?, ?, ?, ?)
00:33:45,671 WARN JDBCExceptionReporter:77 - SQL Error: 1064, SQLState: 42000
00:33:45,671 ERROR JDBCExceptionReporter:78 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '??^5b??08""199G?"0Px8=?ü??Y??ó??l%P?[
¨???ó`-??F????:???S?a?@??Zu??' at line 1
00:33:45,687 ERROR AbstractFlushingEventListener:301 - Could not synchronize database state with session
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at wintys.hibernate.blobclob.UserDAOBean.insert(UserDAOBean.java:41)
at wintys.hibernate.blobclob.UserTest.main(UserTest.java:18)
Caused by: java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '??^5b??08""199G?"0Px8=?ü??Y??ó??l%P?[
¨???ó`-??F????:???S?a?@??Zu??' at line 1
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1693)
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1108)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
... 9 more
Could not execute JDBC batch update
Hibernate: select user0_.id as id0_, user0_.name as name0_, user0_.image as image0_, user0_.info as info0_ from db.myblobclob user0_
00:33:45,671 WARN JDBCExceptionReporter:77 - SQL Error: 1064, SQLState: 42000
00:33:45,671 ERROR JDBCExceptionReporter:78 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '??^5b??08""199G?"0Px8=?ü??Y??ó??l%P?[
¨???ó`-??F????:???S?a?@??Zu??' at line 1
00:33:45,687 ERROR AbstractFlushingEventListener:301 - Could not synchronize database state with session
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at wintys.hibernate.blobclob.UserDAOBean.insert(UserDAOBean.java:41)
at wintys.hibernate.blobclob.UserTest.main(UserTest.java:18)
Caused by: java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '??^5b??08""199G?"0Px8=?ü??Y??ó??l%P?[
¨???ó`-??F????:???S?a?@??Zu??' at line 1
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1693)
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1108)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
... 9 more
Could not execute JDBC batch update
Hibernate: select user0_.id as id0_, user0_.name as name0_, user0_.image as image0_, user0_.info as info0_ from db.myblobclob user0_
[原因]:
搜索了一下,错误原因可能为:"在定义字段时,不要和MYSQL的保留字段有相同的"。
检查了一下表中的字段名,没有发现问题:
CREATE TABLE myblobclob(
id VARCHAR(100) NOT NULL,
name VARCHAR(100),
image BLOB,
info TEXT,
PRIMARY KEY(id)
);
id VARCHAR(100) NOT NULL,
name VARCHAR(100),
image BLOB,
info TEXT,
PRIMARY KEY(id)
);
如果把Blob相关的程序注释了,Clob数据能够正常写入。原因当然出在Blob数据的写入程序中。后来发现,把Blob写入的图片数据换成文本,却可以正常写入。可见,是二进制数据的编码问题。
[解决]:
将原来的数据连接:
<property name="connection.url">
jdbc:mysql://localhost:3306/db
</property>
修改成:jdbc:mysql://localhost:3306/db
</property>
<property name="connection.url">
<![CDATA[jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf-8]]>
</property>
注意,在将连接字符串放到CDATA中,因为&是XML中的转义字符。不然会提示错误:<![CDATA[jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf-8]]>
</property>
Error parsing XML: /hibernate.cfg.xml(12) The reference to entity "characterEncoding" must end with the ';' delimiter.
也可以直接把&修改为&
即:
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf-8
[参考资料]:
Mysql 中的blob相关问题 : http://fenghuang.iteye.com/blog/363931
发表评论
-
[原]MyEclipse location already exists
2009-07-27 00:37 1745[标题]:[原]MyEclipse location alre ... -
[原]Exception starting filter MyStruts2
2009-07-27 19:41 1066[标题]:[原]Exception starting filt ... -
[原]Struts2校验框架
2009-07-27 23:54 1139[标题]:[原]Struts2校验框架 [时间]:2009- ... -
[原]Struts2-拦截器
2009-08-01 00:21 1170[标题]:[原]Struts2-拦截器 [时间]:2009- ... -
[原]Struts2-文件上传与下载
2009-08-08 08:48 2206[标题]:[原]Struts2-文件上 ... -
[原]Struts2-国际化
2009-08-10 18:13 1913[标题]:[原]Struts2-国际化 [时间]:2009- ... -
[原]Struts2-深入探索
2009-08-29 20:32 1083[标题]:[原]Struts2-深入探索 [时间]:2009 ... -
[原]Struts2-整合JFreeChart
2009-09-03 17:10 1922[标题]:[原]Struts2-整合JFr ... -
[转]Java 小例子:数据持久化(保存数据到文件)
2009-03-16 11:00 1783说数据持久化,初学者可能还不太懂;但要说把数据保存到文件,这谁 ... -
[原]调试EL函数时,Tomcat提示NullPointerException
2009-04-03 19:02 943[标题]:调试EL函数时,Tomcat提示NullPointe ... -
[原]HelloWorldServlet
2009-05-27 22:16 949编译运行步骤: 1、将HelloWorldServlet.ja ... -
[原]getServletInfo()
2009-05-27 23:16 1405《JSP完全学习手册》学习心得之:getServletInfo ... -
[原]jsp:forward
2009-05-27 23:24 934《JSP完全学习手册》学习心得:jsp:forward Jud ... -
[原]jsp:param
2009-05-27 23:27 1620《JSP完全学习手册》学习心得:jsp:param param ... -
[原]request.getParameterValues()
2009-05-27 23:32 1243《JSP完全学习手册》学习心得:request.getPara ... -
[原]隐含对象config
2009-05-27 23:54 770《JSP完全学习手册》学习心得:隐含对象config < ... -
[原]cookie读写
2009-05-28 00:03 869《JSP完全学习手册》学习心得:cookie读写 <%@ ... -
[原]getHttpHeader
2009-05-28 00:14 860《JSP完全学习手册》学习心得:getHttpHeader g ... -
[原]SQL内外连接
2009-06-17 22:31 930-- Author:Winty(天堂露珠) -- Date: ...
相关推荐
Blob(Binary Large Object)在数据库中用于存储二进制大对象,如图片、音频或视频文件等...源码中可能包含了类似的实现,通过解压提供的"向数据库插入blob数据实例源码"压缩包,你可以查看并运行完整的Java代码示例。
在这个场景中,我们关注的是如何使用Java Server Pages(JSP)来操作MySQL数据库中的Blob(Binary Large Object)字段,这是一个用于存储大容量二进制数据如图片、文档或音频文件的特殊字段类型。以下是关于这个主题...
在处理数据库中的BLOB(Binary Large Object)数据时,VB提供了丰富的功能。BLOB类型通常用于存储非结构化的数据,如图片、音频、视频或者任何二进制文件。以下将详细讲解如何利用VB来存取数据库中的BLOB数据。 ...
本篇文章将深入探讨如何在MySQL和Oracle数据库中插入Blob数据,并提供相关的源码实例。 一、MySQL中的Blob数据插入 MySQL提供了多种方式插入Blob数据,包括使用PreparedStatement接口。以下是一个Java源码示例: ...
以下是一个简单的示例,展示了如何在Qt中插入BLOB数据到MySQL: ```cpp // 假设已连接到MySQL数据库 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName(...
3. **上传至MySQL**:将本地照片文件上传到MySQL数据库。首先,创建一个包含BLOB字段的新表或者更新已有表结构。例如: ```sql CREATE TABLE mysql_photos ( id INT PRIMARY KEY, photo BLOB ); ``` 然后,...
mysql导出工具,可导出无注释插入语句,表中字段有blob类数据,插入语句前还有锁表操作语句,适合多种场景
在这种情况下,`BLOB`(Binary Large Object)数据类型是MySQL数据库用来存储大对象的理想选择。本文将详细介绍如何在JSP页面上实现`BLOB`类型数据的上传,并将其存储到MySQL数据库中。 首先,理解`BLOB`类型:`...
### MySQL数据库备份与恢复:深度解析与实践指南 在当今数据驱动的世界中,数据库的稳定性和数据的安全性显得尤为重要。MySQL作为全球最流行的开源关系型数据库管理系统之一,其备份和恢复策略是确保数据安全和系统...
在本场景中,我们将探讨如何在 Delphi 中将二维数组数据转换为 Blob 数据,然后存入 MySQL 数据库,并从数据库中读取出来。 首先,我们需要了解 Delphi 中的二维数组和 Stream 对象的概念。二维数组是多个一维数组...
4. **插入Blob数据到数据库** - 创建SQL插入语句,例如:“INSERT INTO table_name (blob_column) VALUES (?)”。 - 使用`PreparedStatement`的`setBlob(int index, Blob blob)`方法设置Blob值。 - 调用`...
spring 中对大数据的处理,包括clob,blob的数据。比之jdbc下简便很多。
在C#编程环境中,与MySQL数据库进行交互是常见的任务,特别是在需要存储非结构化数据如图片时。本示例将详细介绍如何使用C#连接到MySQL数据库,并实现图片的存储功能。 首先,确保你已安装了MySQL数据库服务器以及...
`mysql_blob_tools`是一个针对MySQL数据库中Blob类型数据进行分析和统计的工具。它可以帮助用户处理和理解存储在Blob字段中的大量非结构化数据。 Blob类型在MySQL中有四种变体:TinyBlob、Blob、MediumBlob和...
本案例聚焦于使用MySQL数据库来存储商品图片,这是很多在线商店常见的做法。MySQL是一个流行的关系型数据库管理系统,因其高效、稳定和易于使用而备受青睐。在这个事例中,我们将深入探讨如何使用BLOB(Binary Large...
5. **数据库操作**:在数据库中插入和检索Blob类型的字段,通常需要使用SQL语句或者ORM框架。例如,使用Java的JDBC API,可以创建PreparedStatement来执行INSERT语句,然后使用OutputStream将BASE64解码后的字节数组...
在使用mysql的过程中,有个问题就是mysql的优化,mysql中longblob字段在5.5版本中默认的为1M。 想改变这个问题,需要注意几点: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (2054817 > ...
Java中 Blob的插入与读取
5. 插入表数据:使用 `insert into <表名> [( <字段名 1>[,..<字段名 n > ])] values ( 值 1 )[, ( 值 n )];` 命令。 6. 导出一个表:使用 `mysqldump -u 用户名 -p 数据库名 表名 > 导出的文件名;` 命令。 7. 查询...
5. **上传照片**:将字节数组作为BLOB插入到MySQL数据库的相应表中。使用SQL INSERT语句,将照片数据与其他字段一起插入。 6. **从数据库下载**:当需要从数据库下载照片时,发送一个查询请求,获取照片的二进制...