重分求教!!!!!!!!!!怎样往MYSQL数据库中的BLOB型字段写入数据??? 应该有专门的处理BLOB字段的SQL语句吧,比如:UPDATEBLOB 数据表 SET 字段名=数据值 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 严重关注这个问题我写入的全是乱码,唯一的规律是前面有com.mysql.jdbc.Blob@的前缀但是在dos里直接对mysql操作却是对的十分不解…… 用PreparedStatementBlob 楼上的说的好象起不到作用啊不知道这个还能用java与mysql做开发吗我发现发这种问题的人不少啊,但是答的人都少的可怜,我把java和mysql的帮助文档都翻遍了,还没有想到解决办法我把我的代码拿出来,大家分析一下吧com.mysql.jdbc.Blob wordCo = (com.mysql.jdbc.Blob)wd.getWordCo();//这里wd是一个实物类,是由从数据库中取出的内容构成,它调用的方法返回一个blobSystem.out.println("wordCobefore:" + wordCo);//测试,显示的是乱码。不过,我存进去的时候就是乱码,下面想实现重新写入OutputStream out = wordCo.getOutputStream();//这句话我也不太懂,我想应该是对这个blob设置一个输出流,用来给它赋值InputStream in = new StringBufferInputStream(temp);//temp是一个string型数据,也就是我想存入blob的数据,这里将它赋值给输入流int c;while ( (c = in.read()) != -1) {out.write(c);}//传递值in.close();out.close();//这里没有转码,我用的是英文和数字做测试,发现以上的语句没有起任何作用 好想我没说清楚,我的blob字段是用来摆上传的文件的,我看过mysql中的sql里有LOAD_FILE东西,好像直接吧文件扔进去就可以了,可是我试了下,发现blob字段还是null,不知道为什么? 假设mail表中file字段是blob类型的把文件传到表中File imgFile=new File(filename);String sql="insert into mail(file) values(?);PreparedStatement pstmt=conn.prepareStatement(sql);pstmt.setBinaryStream(1,new FileInputStream(filename),(int)imgFile.length());pstmt.executeUpdate();当然,如果是直接把字符串放到表中的blob字段中,就直接用pstmt.setString(1,filename);就OK了 to zqq7231(黑影) 这里的filename指的是什么,是绝对路径的file(服务器还是本机的),还是相对路径的file。是不是先要将文件上传到服务器,然后再取得它的路径啊?等待大家的回答 谢谢zqq7231(黑影) ,我觉得还是应该向上传的啊,jsp运行在服务器的,他又不知道怎么解析你的路径的! 求答案啊,网上找了半天也没找出....只有20分了,求高手秒杀 系统菜单收缩问题 A.jsp写session, B.jsp得到 session, 多数取不到值, 为什么? 晕,用两对"{{}}"把代码括起来才不报错!!!路过的大哥大姐,帮帮小弟吧! 老是提示数据库链接错误,请帮忙 Java se, test se 但如何设置页面24小时候过期呢? 有没有性能价格比高的jsp空间?谢谢了!谢绝网上的骗子 其它应用服务器移植到Tomcat 汉字显示都不正常! 求解~~~~! 设置JSP中禁止页面回退的问题,在线等待! 救火啊.如何把这个插件打包成cab文件 关于JFreeChart的问题。
我写入的全是乱码,唯一的规律是前面有com.mysql.jdbc.Blob@的前缀
但是在dos里直接对mysql操作却是对的
十分不解……
PreparedStatement
Blob
不知道这个还能用java与mysql做开发吗
我发现发这种问题的人不少啊,但是答的人都少的可怜,我把java和mysql的帮助文档都翻遍了,还没有想到解决办法
我把我的代码拿出来,大家分析一下吧
com.mysql.jdbc.Blob wordCo = (com.mysql.jdbc.Blob)wd.getWordCo();
//这里wd是一个实物类,是由从数据库中取出的内容构成,它调用的方法返回一个blob
System.out.println("wordCobefore:" + wordCo);
//测试,显示的是乱码。不过,我存进去的时候就是乱码,下面想实现重新写入
OutputStream out = wordCo.getOutputStream();
//这句话我也不太懂,我想应该是对这个blob设置一个输出流,用来给它赋值
InputStream in = new StringBufferInputStream(temp);
//temp是一个string型数据,也就是我想存入blob的数据,这里将它赋值给输入流
int c;
while ( (c = in.read()) != -1) {
out.write(c);
}//传递值
in.close();
out.close();
//这里没有转码,我用的是英文和数字做测试,发现以上的语句没有起任何作用
把文件传到表中
File imgFile=new File(filename);
String sql="insert into mail(file) values(?);
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setBinaryStream(1,new FileInputStream(filename),(int)imgFile.length());
pstmt.executeUpdate();
当然,如果是直接把字符串放到表中的blob字段中,就直接用
pstmt.setString(1,filename);
就OK了
这里的filename指的是什么,是绝对路径的file(服务器还是本机的),还是相对路径的file。是不是先要将文件上传到服务器,然后再取得它的路径啊?
等待大家的回答