import java.io.*;
import java.sql.*;
/*
* 测试BLOB二进制大对象的使用
*/
public class TestBLOB{
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
InputStream is = null;
OutputStream os = null;
try {
//1:加载驱动类
Class.forName("com.mysql.jdbc.Driver");
//2:建立连接(连接对象内部其实包含Socket对象,是一个远程的连接,比较耗时,这是Connection对象管理的一个要点)
//真正的开发中,都会使用连接池来管理对象
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test","root","123456");
//将图片插入到数据库
ps = conn.prepareStatement("insert into user (name,age) values (?,?)");
ps.setObject(1, "b");
ps.setBlob(2, new FileInputStream("E:/1.png"));
ps.execute();
ps = conn.prepareStatement("select * from user where name=?");
ps.setObject(1, 2);
rs = ps.executeQuery();
while(rs.next()){
Blob b = rs.getBlob("age");
is = b.getBinaryStream();
//将数据库中的图片,写到指定路径中
os = new FileOutputStream("e:/b.png");
int temp = 0;
while((temp = is.read()) != -1){
os.write(temp);
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(os != null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(is != null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//关闭顺序遵循:ResultSet-->Statement->Connection
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(ps != null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
10 图片操作(BLOB)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Canvas 复习: 弧形 文字 线性渐变 径向渐变 获取canvas图片 canvas添加事件 ...
- 近日老干部靳东发微博感叹天气:“两耳不闻窗外事,怎奈春分满城霾!”。引发网友评论,称靳东为“被演艺事业耽误的诗人。...
- 我是那种只要看到对方有自己不喜欢的缺点,或者自己不喜欢的人,然后就根本不想和TA打交道的人!没有一点想和TA沟通交...
- 口语训练营最后一天,例行的每日一问:这一期你有那些明显的进步? 这是英语学习的第六期,六个21天,我得到了什么?从...