如何往mysql删除服务里面的mysql存blob

mysql和Oracle在对clob和blob字段的处理 - shihuan830619 - ITeye技术网站
博客分类:
一、MySQL与Oracle数据库如何处理Clob,Blob数据类型
(1)不通数据库中对应clob,blob的类型如下:
MySQL中:clob对应text,blob对应blob
DB2/Oracle中:clob对应clob,blob对应blob
(2)domain中对应的类型:
clob对应String,blob对应byte[]
clob对应java.sql.Clob,blob对应java.sql.Blob
(3)hibernate配置文件中对应类型:
clob--&clob ,blob--&binary
也可以直接使用数据库提供类型,例如:oracle.sql.Clob,oracle.sql.Blob
二、jdbc操作clob(以oracle为例)
首先操作clob/blob不像操作varchar类型那样简单,插入步骤一般分为两步:第一步插入一个空值,第二步锁住此行,更新clob/blob字段。
//插入空值
conn.setAutoCommit(false);
String sql = "INSERT INTO T_FILE(NAME, FILE_CONTENT) VALUES ('Jambhala', EMPTY_CLOB())";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.executeUpdate();
//锁住此行
String sql_lockstr = "SELECT FILE_CONTENT FROM T_FILE WHERE NAME='Jambhala' FOR UPDATE";
pstmt = conn.prepareStatement(sql_lockstr);
ResultSet rs = pstmt.executeQuery();
oracle.sql.Clob clob = (oracle.sql.Clob)rs.getClob(1);
java.io.OutputStream writer = clob.getAsciiOutputStream();
byte[] temp = newFileContent.getBytes();
writer.write(temp);
writer.flush();
writer.close();
pstmt.close();
读取内容:
oracle.sql.Clob clob = rs.getClob("FILE_CONTENT");
if(clob != null){
Reader is = clob.getCharacterStream();
BufferedReader br = new BufferedReader(is);
String s = br.readLine();
while(s != null){
content += s+"&br&";
s = br.readLine();
三、jdbc操作blob
conn.setAutoCommit(false);
String sql = "INSERT INTO T_PHOTO(NAME, PHOTO) VALUES ('Jambhala', EMPTY_BLOB())";
pstmt = conn.prepareStatement(sql);
pstmt = conn.executeUpdate();
sql = "SELECT PHOTO FROM T_PHOTO WHERE NAME='Jambhala'";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery(sql);
if(rs.next()){
oracle.sql.Blob blob = (oracle.sql.Blob)rs.getBlob(1);
//write to a file
File file=new File("C:\\test.rar");
FileInputStream fin = new FileInputStream(file);
OutputStream out = blob.getBinaryOutputStream();
int count=-1,total=0;
byte[] data = new byte[blob.getBufferSize()];
while((count=fin.read(data)) != -1){
out.write(data, 0, count);
四、hibernate处理clob
MyFile file = new MyFile();
file.setName("Jambhala");
file.setContent(Hibernate.createClob(""));
session.save(file);
session.flush();
session.refresh(file, LockMode.UPGRADE);
oracle.sql.Clob clob = (oracle.sql.Clob)file.getContent();
Writer pw = clob.getCharacterOutputStream();
pw.write(longText);
//写入长文本
pw.close();
session.close();
五、使用hibernate处理blob
原理基本相同:
Photo photo = new Photo();
photo.setName("Jambhala");
photo.setPhoto(Hibernate.createBlob(""));
session.save(photo);
session.flush();
session.refresh(photo, LockMode.UPGRADE);
//锁住此对象
oracle.sql.Blob blob = photo.getPhoto();
//取得此blob的指针
OutputStream out = blob.getBinaryOutputStream();
//写入一个文件
File f = new File("C:\\test.rar");
FileInputStream fin = new FileInputStream(f);
int count=-1,total=0;
byte[] data = new byte[(int)fin.available()];
out.write(data);
fin.close();
out.close();
session.flush();
String DRIVER = "oracle.jdbc.driver.OracleDriver";
//Oracle连接用URL
private static final String URL = "jdbc:oracle:thin:@testora:1521:orac";
private static final String USER = "scott";
private static final String PASSWORD = "pswd";
//数据库连接
private static Connection conn =
//SQL语句对象
private static Statement stmt =
//@roseuid 3EDA089E02BC
public LobPros(){}
//往数据库中插入一个新的Clob对象
//@param infile
//@throws java.lang.Exception
//@roseuid 3EDA089E02BC
public static void clobInsert(String infile) throws Exception {
//设定不自动提交
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
//插入一个空的Clob对象
stmt.executeUpdate("INSERT INTO TEST_CLOB VALUES ('111', EMPTY_CLOB())");
//查询此Clob对象并锁定
ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR UPDATE");
while(rs.next()){
//取出此Clob对象
oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");
//向Clob对象中写入数据
BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
BufferedReader in = new BufferedReader(new FileReader(infile));
while((c=in.read()) != -1){
out.write(c);
in.close();
out.close();
//正式提交
}catch(Exception e){
//出错回滚
conn.rollback();
//恢复原提交状态
conn.setAutoCommit(defaultCommit);
//修改Clob对象(是在原Clob对象基础上进行覆盖式的修改)
//@param infile
//@throws java.lang.Exception
//@roseuid 3EDA089E02BC
public static void clobModify(String infile) throws Exception {
//设定不自动提交
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
//查询Clob对象并锁定
ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR UPDATE");
while(rs.next()){
//获取此Clob对象
oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");
//进行覆盖式修改
BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
BufferedReader in = new BufferedReader(new FileReader(infile));
while ((c=in.read())!=-1) {
out.write(c);
in.close();
out.close();
//正式提交
}catch(Exception e){
//出错回滚
conn.rollback();
//恢复原提交状态
conn.setAutoCommit(defaultCommit);
//替换CLOB对象(将原CLOB对象清除,换成一个全新的CLOB对象
//@param infile
//@throws java.lang.Exception
//@roseuid 3EDA04BF01E1
public static void clobReplace(String infile) throws Exception {
//设定不自动提交
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
//清空原CLOB对象
stmt.executeUpdate("UPDATE TEST_CLOB SET CLOBCOL=EMPTY_CLOB() WHERE ID='111'");
//查询CLOB对象并锁定
ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR UPDATE");
while (rs.next()) {
//获取此CLOB对象
oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");
//更新数据
BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
BufferedReader in = new BufferedReader(new FileReader(infile));
while ((c=in.read())!=-1) {
out.write(c);
in.close();
out.close();
//正式提交
}catch(Exception e){
//出错回滚
conn.rollback();
//恢复原提交状态
conn.setAutoCommit(defaultCommit);
//CLOB对象读取
//@param outfile
输出文件名
//@throws java.lang.Exception
//@roseuid 3EDA04D80116
public static void clobRead(String outfile) throws Exception {
//设定不自动提交
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
//查询CLOB对象
ResultSet rs = stmt.executeQuery("SELECT * FROM TEST_CLOB WHERE ID='111'");
while (rs.next()) {
//获取CLOB对象
oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");
//以字符形式输出
BufferedReader in = new BufferedReader(clob.getCharacterStream());
BufferedWriter out = new BufferedWriter(new FileWriter(outfile));
while ((c=in.read())!=-1) {
out.write(c);
out.close();
in.close();
}catch(Exception e){
conn.rollback();
//恢复原提交状态
conn.setAutoCommit(defaultCommit);
//向数据库中插入一个新的BLOB对象
//@param infile
//@throws java.lang.Exception
//@roseuid 3EDA04E300F6
public static void blobInsert(String infile) throws Exception {
//设定不自动提交
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
//插入一个空的BLOB对象
stmt.executeUpdate("INSERT INTO TEST_BLOB VALUES ('222', EMPTY_BLOB())");
//查询此BLOB对象并锁定
ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID='222' FOR UPDATE");
while (rs.next()) {
//取出此BLOB对象
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");
//向BLOB对象中写入数据
BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));
while ((c=in.read())!=-1) {
out.write(c);
in.close();
out.close();
//正式提交
} catch (Exception e) {
//出错回滚
conn.rollback();
//恢复原提交状态
conn.setAutoCommit(defaultCommit);
//修改BLOB对象(是在原BLOB对象基础上进行覆盖式的修改)
//@param infile
//@throws java.lang.Exception
//@roseuid 3EDA04E90106
public static void blobModify(String infile) throws Exception {
//设定不自动提交
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
//查询BLOB对象并锁定
ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID='222' FOR UPDATE");
while (rs.next()) {
//取出此BLOB对象
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");
//向BLOB对象中写入数据
BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));
while ((c=in.read())!=-1) {
out.write(c);
in.close();
out.close();
//正式提交
} catch (Exception e) {
//出错回滚
conn.rollback();
//恢复原提交状态
conn.setAutoCommit(defaultCommit);
//替换BLOB对象(将原BLOB对象清除,换成一个全新的BLOB对象)
//@param infile
//@throws java.lang.Exception
//@roseuid 3EDA0505000C
public static void blobReplace(String infile) throws Exception {
//设定不自动提交
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
//清空原BLOB对象
stmt.executeUpdate("UPDATE TEST_BLOB SET BLOBCOL=EMPTY_BLOB() WHERE ID='222'");
//查询此BLOB对象并锁定
ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID='222' FOR UPDATE");
while (rs.next()) {
//取出此BLOB对象
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");
//向BLOB对象中写入数据
BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));
while ((c=in.read())!=-1) {
out.write(c);
in.close();
out.close();
//正式提交
} catch (Exception e) {
//出错回滚
conn.rollback();
//恢复原提交状态
conn.setAutoCommit(defaultCommit);
//BLOB对象读取
//@param outfile
输出文件名
//@throws java.lang.Exception
//@roseuid 3EDA050B003B
public static void blobRead(String outfile) throws Exception {
//设定不自动提交
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
//查询BLOB对象
ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID='222'");
while (rs.next()) {
//取出此BLOB对象
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");
//以二进制形式输出
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outfile));
BufferedInputStream in = new BufferedInputStream(blob.getBinaryStream());
while ((c=in.read())!=-1) {
out.write(c);
in.close();
out.close();
//正式提交
} catch (Exception e) {
//出错回滚
conn.rollback();
//恢复原提交状态
conn.setAutoCommit(defaultCommit);
//建立测试用表格
//@throws Exception
public static void createTables() throws Exception {
stmt.executeUpdate("CREATE TABLE TEST_CLOB (ID NUMBER(3), CLOBCOL CLOB)");
stmt.executeUpdate("CREATE TABLE TEST_BLOB (ID NUMBER(3), BLOBCOL BLOB)");
} catch (Exception e) { }
//@param args - 命令行参数
//@throws java.lang.Exception
//@roseuid 3EDA052002AC
public static void main(String[] args) throws Exception {
//装载驱动,建立数据库连接
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL,USER,PASSWORD);
stmt = conn.createStatement();
//建立测试表格
createTables();
//CLOB对象插入测试
clobInsert("c:/clobInsert.txt");
clobRead("c:/clobInsert.out");
//CLOB对象修改测试
clobModify("c:/clobModify.txt");
clobRead("c:/clobModify.out");
//CLOB对象替换测试
clobReplace("c:/clobReplace.txt");
clobRead("c:/clobReplace.out");
//BLOB对象插入测试
blobInsert("c:/blobInsert.doc");
blobRead("c:/blobInsert.out");
//BLOB对象修改测试
blobModify("c:/blobModify.doc");
blobRead("c:/blobModify.out");
//BLOB对象替换测试
blobReplace("c:/blobReplace.doc");
blobRead("c:/bolbReplace.out");
//关闭资源退出
conn.close();
System.exit(0);
下载次数: 30
浏览 10766
shihuan830619
浏览: 278666 次
来自: 上海
邮箱网盘在哪,没找到。能给份源 ...
能分享一份源码吗?
大神发个代码到我邮箱:博客访问: 3909749
博文数量: 651
博客积分: 10821
博客等级: 上将
技术积分: 11054
注册时间:
认证徽章:
专注与操作系统相关的云计算,linux,openstack,spark, hadoop
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Java
该文只介绍了BLOB操作、稍后会有TEXT的操作文章。
MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。BLOB类型实际是个类型系列(TinyBlob、Blob、MediumBlob、LongBlob),除了在存储的最大信息量上不同外,他们是等同的。&
MySQL的四种BLOB类型&
&类型&&大小(单位:字节)&
&TinyBlob&&最大&255B
&Blob&&最大&65K&
&MediumBlob&&最大&16M&
&LongBlob&&最大&4G&
实际使用中根据需要存入的数据大小定义不同的BLOB类型。&
需要注意的是:如果你存储的文件过大,数据库的性能会下降很多。
&二、mysql中的blob存取
create table Dish {
下面是从数据库里写的方法:
&&&&&&&& String filepath =
(String)session.getAttribute("file");//这里获得的是用jspsmartupload上传的文件的路径
File file = new
File(filepath);
FileInputStream fin = new
FileInputStream(file);
&dataBS = new
blobConn();&&&
con = dataBS.getConn();
&&&&&&&&& String erpsql =
"insert into Dish
values(?,?)";
PreparedStatement stmt =
con.prepareStatement(erpsql);
&&&&&&&&&&stmt.setString(2,String.valueOf(id));
&&&&&&&&&&stmt.setBinaryStream(3,fin,(int)file.length());//想数据库里插入是很简单的,就一行,但这种方法只有mysql可以用
&&&&&&&&&&stmt.executeUpdate();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&fin.close();
&&&&&&&&&&stmt.close();
&&&&&&&&&&con.close();
下面是从数据库里读的方法:
1.BufferedInputStream inputimg =
&Connection con = sqlDS.getConnection();//简写,获得数据库连接
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select from Dish where id = 11");
if(rs.next()){
java.sql.Blob blob =
(java.sql.Blob)rs.getBlob("photo");
input = new BufferedInputStream(blob.getBinaryStream);
BufferedImage image =
image = javax.imageio.ImageIo.read(input);
ServlerOutputStream sos = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
input.close();
}catch(Exception e) {
e.printStackTrace();
if(rs.next()){
&&& res.setContentType
("image/charset=GB2312");//HttpServletResponse
&&&&ServletOutputStream out =
res.getOutputStream
&&&&BufferedInputStream jpgData
= new BufferedInputStream (rs.getBinaryStream
("photo"));
&&&&byte [] buf = new byte
&&&&if(jpgData.available () <=
0x0)//判断数据库里存放图片的字段是否有值,可以进行其他处理
&&&&&res.sendRedirect
("/images/nophoto.gif");&
&&&&while((len
= jpgData.read (buf, 0, buf.length)) !=
&&&&&out.write (buf, 0, len);
if(rs.next()){
&&&&&&& res.setContentType("image/jpeg");
& & & & ServletOutputStream&&
out=res.getOutputStream(); &
& & & & InputStream
& in=rs.getBinaryStream("photo"); &
byte & buff[]=new & byte[1024]; &
while((i=in.read(buff))!=-1){&&&
&&&&&&&&&&&&&
out.write(buff); &
& & & & } &
in.close();&&&
out.close();
三、charset设置对blog操作的影响
存储txt文件的时候没有问题;存储图片也没问题,但是再把图片图片从数据库中取出来,不能正常显示了;存储word格式的文件报错,如下:
Caused&by:&java.sql.BatchUpdateException:&Syntax&error&or&access&violation&message&from&server:&"You&have&an&error&in&your&SQL&syntax&near&''D0CF11E0A1B11AEE000300FEFF0000000'&at&line&1"
&&&&at&com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1540)
查了一下可能是charset编码的问题,于是将原来的连接字符串设置为:
url=url++"?useUnicode=true&characterEncoding=utf-8";&&
&问题解决了,不仅能支持各种格式的文件,图片也显示正常了。如果设置为其他的字符集就会出现前面的错误。
四、max_allowed_packet参数设置
往数据库中存储较大的文件是出现如下错误:
java.lang.IllegalArgumentException:&Packet&is&larger&than&max_allowed_packet&from&server&configuration&of&1048576&bytes&&
这是因为存入的文件大于mysql默认的&max_allowed_packet值。
解决办法:在mysql安装目录下的my.ini文件中的最后一行添加
max_allowed_packet&=&10M(也可以设置自己需要的大小)。&&
&五、效率问题
利用数据库存储大量文件时,查询效率就会变得很低。
在表的设计上,我们可以选择吧文件的相关信息存在一个表中fileInfo,而吧文件内容存在另一个表中
fileContent,fileContent中有一个指向fileInfo的外键。这样,查询的时候只需要访问fileInfo,只有当要访问某个文件具体内容的时候才访问fileContent表。分表存储,能够显著提高查询速度。
-----------------------------
向MySQL数据库插入Blob数据的问题
[摘要]:在使用Hibernate向数据库插入Blob二进制数据时,发生如下错误:SQL
Error: 1064, SQLState: 42000 。You have an error in your SQL 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
[关键字]:MySQL、Blob、图片、image、java、Hibernate、Clob、&
[环境]:5.1.34-community
MySQL Community Server (GPL),Hibernate 3.2.5
[作者]:Winty ()
http://www.blogjava.net/wintys
使用Hibernate向数据库插入Blob二进制数据,程序如下:
&& &public void insert() {
&&& &User user = new User();
&&& &Transaction tc =
&&& &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);
&& &&& &&&
&& &&& &}catch(Exception
&& &&& &&& &if(tc !=
&& &&& &&& &&&
&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 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
00:33:45,687 ERROR AbstractFlushingEventListener:301 - Could not
synchronize database state with
org.hibernate.exception.SQLGrammarException: Could not execute JDBC
batch update
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
org.hibernate.mit(JDBCTransaction.java:106)
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 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
com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1693)
com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1108)
org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
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
&&& name&&&
VARCHAR(100),
&&& image&&
&&& info&&&&&&
&&& PRIMARY KEY(id)
&如果把Blob相关的程序注释了,Clob数据能够正常写入。原因当然出在Blob数据的写入程序中。后来发现,把Blob写入的图片数据换成文本,却可以正常写入。可见,是二进制数据的编码问题。
&将原来的数据连接:
&jdbc:mysql://localhost:3306/db
阅读(32243) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 mysql in 里面的值 的文章

 

随机推荐