package org.pic;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* 图片数据库存取
* @author lww
*
*/
public class SavePic {
public static Connection conn = null;
public static PreparedStatement pStmt = null;
/**
* 数据库中加入图片等文件
*/
public static void InsertPic() {
try {
//oracle
// String sql = "insert into TEACHER(ID,NAME,PHOTO,BASE64PHOTO) values('1',?,?,?)";
// Class.forName("oracle.jdbc.driver.OracleDriver");
// conn = DriverManager.getConnection(
// "jdbc:oracle:thin:@//192.168.1.183:1521/orcl",
// "LWW", "lww");
//mysql
// String sql = "insert into doc(ID,NAME,PHOTO,BASE64PHOTO) values('1',?,?,?)";
// Class.forName("com.mysql.jdbc.Driver");
// conn = DriverManager.getConnection(
// "jdbc:mysql://192.168.1.239:3306/test",
// "jtang", "jtang123");
//sqlserver
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String sql = "insert into doc(ID,NAME,PHOTO,BASE64PHOTO) values('1',?,?,?)";
conn = DriverManager.getConnection(
"jdbc:sqlserver://192.168.1.204:1433;DatabaseName=TestForBI",
"sa", "123456");
pStmt = conn.prepareStatement(sql);
pStmt.setString(1, "Lily");// 设置字段NAME值
// 数据库插入图片/word/excel等
File file = new File("src/doc.png");
FileInputStream fis = new FileInputStream(file);
//创建一个和文件大小一样的缓冲区
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
pStmt.setBytes(2, buffer);//内容设置到字段PHOTO中
System.out.println("未加密图片长度:"+file.length());
String base64 = new BASE64Encoder().encode(buffer);
System.out.println("加密后图片长度:" +base64.length());
pStmt.setBytes(3, base64.getBytes());//内容设置到字段BASE64PHOTO中
int n = pStmt.executeUpdate();
System.out.println(n + "条记录插入");
} catch (SQLException e) {
e.printStackTrace();
} catch ( IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
pStmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 从数据库中取出图片等文件
* @throws ClassNotFoundException
*/
public static void getPic() throws ClassNotFoundException {
try {
//Oracle
// String sql = "select ID,NAME,PHOTO,BASE64PHOTO from TEACHER where ID=?";
// Class.forName("oracle.jdbc.driver.OracleDriver");
// conn = DriverManager.getConnection(
// "jdbc:oracle:thin:@//192.168.1.183:1521/orcl",
// "LWW", "lww");
//mysql
// Class.forName("com.mysql.jdbc.Driver");
// String sql = "select ID,NAME,PHOTO,BASE64PHOTO from doc where ID=?";
// conn = DriverManager.getConnection(
// "jdbc:mysql://192.168.1.239:3306/test",
// "jtang", "jtang123");
//sqlserver
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String sql = "select ID,NAME,PHOTO,BASE64PHOTO from doc where ID=?";
conn = DriverManager.getConnection(
"jdbc:sqlserver://192.168.1.204:1433;DatabaseName=TestForBI",
"sa", "123456");
pStmt = conn.prepareStatement(sql);
pStmt.setString(1, "1");
ResultSet rs = pStmt.executeQuery();
if (rs.next()) {
System.out.println("ssssssssss");
//获取图片字段
// FileOutputStream fos = new FileOutputStream(new File("abc.jpg"));
// InputStream is = rs.getBinaryStream("photo");
//
// byte[] buffer = new byte[4 * 1024];
// int length = 0;
// while ((length = is.read(buffer)) != -1) {
// fos.write(buffer, 0, length);
// }
//获取图片加密字段内容,并进行base64解密
FileOutputStream fos = new FileOutputStream(new File("abcbase64.jpg"));
byte[] basebt = rs.getBytes("base64photo");
// System.out.println("加密:" +new String(basebt));
System.out.println("加密:" +basebt.length);
byte[] by = new BASE64Decoder().decodeBuffer(new String(basebt));
System.out.println("解密:" +by.length);
// System.out.println("解密:" +new String(by));
fos.write(by, 0, by.length);
fos.flush();
fos.close();
// is.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
pStmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) throws ClassNotFoundException {
InsertPic();//把图片保存到数据库中
getPic();//获取字段并生成图片
}
}

能量守恒洛
- 粉丝: 162
最新资源
- 网络连接配置和系统安全专业讲座.pptx
- 新版计算机基础知识试题及答案.doc
- 网络工程师实习总结2000字.docx
- 电力信息及自动化产品科技贷款项目可行性论证报告.doc
- 高中生物2017年专题11.3基因工程的应用(选修一)课件.ppt
- 基于NeuroSky-TGAM脑机接口的EEG识别获奖科研报告论文.docx
- 青梧商城B2B2C-C++资源
- 综合布线技术省名师优质课赛课获奖课件市赛课一等奖课件.ppt
- 系统安全工程能力成熟模型20b.docx
- 神经网络分类器.ppt
- 关于Widget-、App-Widget-、Web-App-的概念.doc
- 我们身边的网络安全.ppt
- 数据通信基础知识PPT课件.ppt
- 教师网络平台学习心得体会.doc
- 物流网络设计(1).ppt
- 安徽电信后端组织架构调整方案(座谈会稿0716).ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


