您的位置:首页 > 编程语言 > Java开发

java 将图片存入mysql数据库中

2015-04-04 12:55 615 查看
目前想要将用于的头像存入到数据库中,也就是将图片存入到数据库中,下面是自己参考的代码
create table image(id int NOT NULL primary key auto_increment,file_name varchar(255) not null,content longblob);
图片在数据库中以byte 形式存储,利用ByteBuffer来操作,图片在数据库的存储类型为longblob;
package com.jorry.image_save;

import java.io.File;

import java.io.FileInputStream;

import java.nio.ByteBuffer;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class Image_Save {

public static boolean Image_byte(String sqlstr,File file)

{

try {

FileInputStream fin=new FileInputStream(file);

ByteBuffer nbf=ByteBuffer.allocate((int)file.length());//分配文件的字节缓存区

byte[] array=new byte[1024];

int offset=0,length=0;

//存放字节流

while((length=fin.read(array))>0)

{

if(length!=1024)

nbf.put(array,0,length);

else

nbf.put(array);

offset +=length;

}

fin.close();

byte[] content=nbf.array();

System.out.println(content.length);

return LoadImage(sqlstr, content);

}

catch (Exception e) {

e.printStackTrace();

}

return false;

}

private static boolean LoadImage(String sqlstr,byte[] in){

boolean flag=false;

if(sqlstr==null){

sqlstr="select *from image";

try {

Connection con=getConnection();

Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

ResultSet rs=stmt.executeQuery(sqlstr);

if(rs.next()){

rs.updateBytes(3, in);

rs.updateRow();

System.out.println("updateROW");

}else{

rs.moveToInsertRow();rs.updateString(2, "01");

rs.updateBytes(3, in);

rs.insertRow();

System.out.println("insertRow");

}

rs.close();

flag=true;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return flag;

}

return flag;

}

public static Connection getConnection(){ //连接数据库

Connection con=null;

try {

Class.forName("com.mysql.jdbc.Driver");

con=DriverManager.getConnection("jdbc:mysql://localhost:3306/weixin","root","123456");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return con;

}

public static void main(String[] args){

File file=new File("D:/1.jpg");

if(Image_byte(null, file))

{System.out.println("true");

}else{System.out.println("false");

}

}

}

别忘记添加连接mysql的jar包不然报错误java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:190)

at com.jorry.image_save.Image_Save.getConnection(Image_Save.java:81)

at com.jorry.image_save.Image_Save.LoadImage(Image_Save.java:50)

at com.jorry.image_save.Image_Save.Image_byte(Image_Save.java:32)

at com.jorry.image_save.Image_Save.main(Image_Save.java:93)

java.lang.NullPointerException

at com.jorry.image_save.Image_Save.LoadImage(Image_Save.java:51)

at com.jorry.image_save.Image_Save.Image_byte(Image_Save.java:32)

at com.jorry.image_save.Image_Save.main(Image_Save.java:93)

add jar添加jar包就ok了,之后连接mysql数据库都需要这个jar包 ,包括你开发java web 或微信公共平台开发时只要需要连接mysql数据库,都需要这个jar包
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: