在java中用longblob存储图片

lzmings 发布于 2013/10/27 20:08
阅读 1K+
收藏 1


表的创建:

create  table person(

                     person_id int auto_increment  primary key,

                     first_name char(45)  not null,

                     second_name char(45)   not null,

                    photo longblob

                     )  engine=innodb;

在eclipse java程序:

package org.lxh.dataInputPhotoes;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.io.*;

 

 

public class MyClobInput {

public static final String DBDRIVER="org.gjt.mm.mysql.Driver";    //数据库的驱动

public static final String DBURL="jdbc:mysql://localhost:3306/Student"; //数据库连接地址

public static final String DBUSER="root";  //用户名

public static final String DBPASSWORD="liangzhiming";  //密码

 

/**

 * @param args

 */

public static void main(String[] args) throws Exception {

// TODO Auto-generated method stub

Connection dataConnect=null;   

PreparedStatement link=null;

   //String name="凤凰内河";

Class.forName(DBDRIVER);//加载驱动

dataConnect=DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD); //连接数据库

File file=new File("E:"+File.separator+"我的文档"+File.separator+"凤凰之旅"+File.separator+"凤凰内河.gif"); // 图片的存储路径

InputStream  input =new BufferedInputStream(new  FileInputStream(file)); //文件的输入流

//System.out.println(file);



String sql="insert  into person(first_name,second_name,photo) values(?,?,?)"; //sql语句

//dataConnect.setAutoCommit(false);

    link=dataConnect.prepareStatement(sql);    //加载sql语句

    

    link.setString(1,"" ); //sql 语句进行参数设置

   link.setString(2,"志明" ); //sql 语句进行参数设置

    link.setBlob(3, input); //sql 语句进行参数设置

    link.executeUpdate(); //对表进行更新操作

    System.out.println("数据输出成功!");

    dataConnect.close();

    link.close();

    }

}

出现的错误:

Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 '???o?7?
mp??ú?M???;[vU?(??3????ò¤?H???<R,?{???????O?|z`??94\0f?' at line 1

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)

at com.mysql.jdbc.Util.getInstance(Util.java:386)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2818)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2157)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2460)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2377)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2361)

at org.lxh.dataInputPhotoes.MyClobInput.main(MyClobInput.java:37)

求大神帮忙!本人万分感谢!

加载中
0
oneMore
oneMore
没见过有人这么搞过,存路径不行吗?
0
逝水fox
逝水fox
和存路径无关,没发现你报错的内容是乱码么,检查编码
返回顶部
顶部