`
rain_2372
  • 浏览: 684338 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据库中图片的操作(字节流的操作)

    博客分类:
  • java
阅读更多
package com.fww.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
* @author fu
* 类初始化加载的时候实现驱动的注册
* 本类实现的是一个数据库的连接的操作的工具类,
* 其中提供的是数据库的连接以及数据库最后的资源释放的操作
*
*/
public class JDBCUtil {

//数据库的连接时候的url
private static String url = "jdbc:mysql://localhost:3306/jdbc";
//数据库的用户
private static String user = "root";
//数据库用户对用的密码
private static String password = "sa";

static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

/**
*
* 获取数据库连接的操作
* @return 已经和数据库进行连接的connection对象
* @throws SQLException 数据库连接获取失败的操作
*/
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(url, user, password);
}


/**
* @param conn 已经和数据库进行连接的connection对象
* @param sql 需要进行执行的sql语句
* @return 预处理的对象preparedStatement
*/
public static PreparedStatement getPreparedStatement(Connection conn,String sql){
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return ps;
}

/**
* 数据库连接箱资源释放的操作
* @param conn 和数据库进行连接的对象
* @param ps 预处理的preparedStatement对象
* @param rs sql执行的结果集
*/
public static void close(Connection conn, Statement ps, ResultSet rs){
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();
}
}
}

}
2. [代码]字节流的操作(图片为实例)     跳至 [1] [2] [全屏预览]
package com.fww.test;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.fww.util.JDBCUtil;

/**
* @author fu
* 实现的是一个大的文件的存放的操作,
* 典型的实例是一个图片的操作
* 实际上是一个使用到文件的字节流的操作的
*/
public class BlobTest {

public static void main(String[] args) {
// insert();//文件的存放的测试
read();
}

//插入的操作实例
static void insert(){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {

conn = JDBCUtil.getConnection();
String sql = "insert into blob_test(blob_text) values(?)";
ps = JDBCUtil.getPreparedStatement(conn, sql);
//一个用于进行存放的图片数据
File file = new File("43.jpg");
InputStream in = new BufferedInputStream(new FileInputStream(file));
ps.setBinaryStream(1, in, (int)file.length());

int i = ps.executeUpdate();

in.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
JDBCUtil.close(conn, ps, rs);
}

}


//实现一个文件的读取的操作
static void read() {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {

conn = JDBCUtil.getConnection();
String sql = "select blob_text from blob_test where 1=?";
ps = JDBCUtil.getPreparedStatement(conn, sql);
ps.setInt(1, 1);
rs = ps.executeQuery();
while(rs.next()){
Blob blob = rs.getBlob(1);
InputStream in = blob.getBinaryStream();
//可以直接的拿到字节流的操作如下:
//in = rs.getBinaryStream(1);

File file = new File("test.jpg");
OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
byte[] buff = new byte[1024];
for(int i=0;(i=in.read(buff))>0;){
out.write(buff, 0, i);
}
out.close();
in.close();
}

} catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
JDBCUtil.close(conn, ps, rs);
}
}


}
转:http://www.oschina.net/code/snippet_1377870_26795 数据库中图片的操作(字节流的操作)
分享到:
评论

相关推荐

    将图片以字节流存到数据库再从数据库获取显示

    本文将详细讲解如何将图片以字节流的形式存入数据库,然后从数据库中取出并显示。我们将以一个名为"SaveGetPicture_Demo"的示例项目作为参考,探讨这一过程。 首先,我们需要理解什么是字节流。字节流是计算机处理...

    将图片二进制流存储到数据库中

    通过分析和运行这些代码,可以更深入地理解和实践图片二进制流存储到数据库的操作。 总之,将图片二进制流存储到数据库是一种实用的技术,适用于需要快速访问和高效管理大量图像数据的应用场景。正确处理二进制数据...

    C# 将图片文件转换成字节流存储在TXT

    本篇将深入探讨如何使用C#将图片文件转换为字节流,并将其存储在TXT文本文件中。 首先,我们需要理解字节流的概念。字节流是数据在计算机内存或磁盘间传输的基本单元,它可以是输入流(读取数据)或输出流(写入...

    图片存入数据库从数据库中读取图片.txt

    4. **资源管理**:在读写文件和数据库操作中,正确关闭`FileStream`、`BinaryReader`、`SqlDataReader`和`SqlConnection`等对象是必要的,以释放系统资源。 综上所述,图片存入数据库和从数据库中读取图片的过程,...

    数据库中图片文件全面操作易语言源码

    这通常涉及读取图片文件,将其转换为字节流,再将这个字节流插入到数据库中。 数据库写入图片的操作可能包括以下步骤: 1. 打开数据库:使用易语言的数据库接口,如ODBC或ADO,建立与数据库的连接。 2. 选择或创建...

    C#把图片转换成数据流存入数据库中再读出来变成图片

    在C#编程中,将图片转换为数据流并存储到SQL Server数据库中,以及从数据库中读取数据流再恢复为图片,是一项常见的任务。这通常用于存储用户头像、产品图片等,节省磁盘空间并提高数据传输效率。下面我们将详细讲解...

    数据库保存图片及显示

    当图片上传到服务器时,会被转换成字节流并存入数据库。 2. 数据库表设计: 创建一个包含图片信息的数据库表,一般需要有字段如`id`(主键),`image_data`(存储图片的BLOB字段),`filename`(原始图片文件名),`...

    C# winform 上传的图片以二进制流形式储存到数据库 以及 从数据库中展示图片的Demo

    这个Demo展示了如何将图片转换为二进制流,然后将这个二进制流存储到数据库,以及如何从数据库中读取这些二进制流并重新显示图片。下面将详细解释这一过程涉及的关键知识点。 1. 图片与二进制流转换: 图片本质上...

    数据库中存取图片

    在读取时,需要将二进制数据转换回字节流,再用`MemoryStream`构造Image对象。 6. **错误处理和资源管理**:在操作数据库时,确保正确处理可能出现的异常,并在完成操作后关闭连接和释放资源,避免资源泄露。 通过...

    使用Gridview绑定数据库中的图片

    ### 使用Gridview绑定数据库中的图片 #### 背景与目的 在Web应用程序开发中,尤其是在ASP.NET项目中,经常...此外,通过将图片数据存储在数据库中,可以方便地进行备份和恢复操作,这对于保证数据的安全性非常重要。

    VB将图片存入Access数据库并实现导出、删除等操作.7z

    在VB(Visual Basic)编程中,将图片存入Access数据库并进行相关操作是常见的数据库管理需求。Access数据库虽然主要用于存储结构化数据,如文本、数字等,但通过特定方法,也能处理二进制大型对象(BLOB,Binary ...

    图片批量导入oracle数据库

    4. **执行SQL语句**:将图片文件的字节流设置为SQL语句的参数,然后通过Statement或PreparedStatement对象执行SQL。PreparedStatement更安全,因为它可以防止SQL注入攻击。 5. **批处理操作**:为了提高性能,可以...

    网数据库存取图片

    - 使用VARBINARY(MAX):将图片转换为字节流,然后将这些字节存储到数据库中的VARBINARY(MAX)字段。这可以通过编程语言如C#、Java、Python等实现,通过数据库连接执行INSERT语句。 - 图像路径存储:另一种方法是仅...

    QT实现图片插入数据库并显示

    3. **图像编码与存储**:由于数据库通常不直接支持二进制大对象(BLOB)数据类型,所以图像需要转换成字节流。可以使用`QImage`或`QPixmap`的`save`函数将图像保存为内存中的字节数组,然后用`QByteArray`存储。在...

    java,Blob字段操作,将图片或者文件保存到数据库中.zip

    在Java编程中,Blob(Binary Large Object)是用于存储大量二进制数据的数据类型,常被用在数据库中存储图片、文件等非文本信息。本教程将深入讲解如何使用Java处理Blob字段,以便将图片或文件保存到数据库中。这个...

    C#数据库中图片的存储与读取(免费)

    - 图片数据首先会被转换为字节数组,然后使用`SqlCommand`对象的`ExecuteNonQuery`方法将这些字节插入到数据库表中。 2. **图片读取**: - 要从数据库中读取图片,可以执行一个`SELECT`查询,将返回的`VARBINARY`...

    图片BASE64加密保存到数据库Blob类型中(放入数据库,并取出生成图片)

    本示例主要涉及的是如何将图片通过BASE64编码加密后存入数据库的Blob类型字段,并能从数据库中取出这些数据再还原成原始图片。以下是相关知识点的详细说明: 1. **BASE64编码**:BASE64是一种用于将二进制数据转换...

    数据库中图片存储及读取说明

    6. **安全性与性能考虑**:在实际应用中,还需要考虑一些安全和性能优化措施,比如验证文件类型、限制文件大小、使用流操作减少内存占用,以及可能的缓存策略来提高图片加载速度。 总之,ASP.NET提供了一套完善的...

    vb.net做的图片存储到SQL数据库

    在上述代码中,`File.ReadAllBytes`用于读取图片文件并将其转换为字节数组,而`File.WriteAllBytes`则将从数据库获取的字节数组写回为图片文件。`SqlCommand`对象用于执行SQL语句,`Parameters.AddWithValue`用于...

    java Web 读取数据库存储图片

    在Java Web开发中,将图片数据...总的来说,Java Web读取数据库存储的图片涉及数据库设计、JDBC操作、数据流处理以及HTTP响应。通过这些技术,我们可以在Web应用中动态地展示由数据库存储的图片,实现灵活的数据管理。

Global site tag (gtag.js) - Google Analytics