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包
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包
相关文章推荐
- java如何将图片存入mysql数据库
- java如何将图片以2进制的形式存入数据库
- Mysql数据库:java对象的存入和查询
- JAVA将图片以二进制形式存入Access数据库
- java将图片存入数据库
- java 爬虫实现爬豆瓣电影数据并存入mysql数据库
- 用Java 将图片存入Mysql 并读出
- 用DOM方法解析xml文件并存入Mysql数据库【java】
- 将图片存入数据库【java实现】
- 把图片存入mysql数据库
- java之二进制存取图片(MySQL数据库)
- java把图片写入mysql数据库的代码
- php把图片存入mysql数据库中并在网页上显示
- 使用JDBC连接Mysql数据库存入二进制图片并实现读取在PHP中打开展示。
- java实现上传图片存入到数据库
- Java如何读取Excel中在值,存入到Mysql数据库
- java切割图片并存入sqlite数据库中
- Java利用Eclipse和Mysql数据库连接并存储图片——取出图片
- java 读取world的图片 并把图片路径存入数据库
- Servlet 上传页面图片 并存入Mysql数据库