救助贴???关于Mysql插入二进制文件
尝试把图片文件转化成二进制存入Mysql数据库的blob类型的列中。我是想写个Java类实现简单的存入,但是运行出错。
网上有关错误提示码的解答,和我遇到的都不一样。而且大多是说是sql语句有问题,但我的Sql语句在其他工具中可以运行,
下面是源码,希望知道的朋友解答。我的这和类是根据Oracle的Java类改的,会不会是类里代码有问题。
import java.io.*;
import java.sql.*;
public class SavePicture
{
public static void main(String[] args){
Connection conn=null;
PreparedStatement stmt=null;
FileInputStream fis=null;
try{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/databasename";
conn=DriverManager.getConnection(url,"username","password");
String sql="insert into tablename values(?,?,?)";
stmt=conn.prepareStatement(sql);
stmt.setString(1,"10");
stmt.setString(2,"shiyang");
File file=new File("aa.jpg");
fis=new FileInputStream(file);
stmt.setBinaryStream(3,fis,(int)file.length());
stmt.executeUpdate();
stmt.close();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(fis!=null){
fis.close();
}
}catch(IOException ioe){
ioe.printStackTrace();
}
try{
if(conn!=null){
conn.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
}
import java.sql.*;
public class SavePicture
{
public static void main(String[] args){
Connection conn=null;
PreparedStatement stmt=null;
FileInputStream fis=null;
try{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/databasename";
conn=DriverManager.getConnection(url,"username","password");
String sql="insert into tablename values(?,?,?)";
stmt=conn.prepareStatement(sql);
stmt.setString(1,"10");
stmt.setString(2,"shiyang");
File file=new File("aa.jpg");
fis=new FileInputStream(file);
stmt.setBinaryStream(3,fis,(int)file.length());
stmt.executeUpdate();
stmt.close();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(fis!=null){
fis.close();
}
}catch(IOException ioe){
ioe.printStackTrace();
}
try{
if(conn!=null){
conn.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
}
补充dos下的运行出错截图:
数据表中的三个列分别是varchar(20)主键,varchar(20)not null,blob。
这个问题郁闷一天了,希望能尽快得到解答,谢谢。
补充:我可能是建表有问题,我直接通过SQLyogEnt也插不进二进制文件,但是我的数据类型的确是blob,到底是为什么???
郁闷!!!
作者:Steven(Steven's Think out)
出处:http://shiyangxt.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。