用Oracle轻松取出图片(oracle取出图片)
上传进数据库中的BLOB数据
每个坐在莫名其妙的键盘前,都想尝试一下挑战,即从Oracle数据库中取出上传的BLOB、文件或图片,然后将其显示在网页上。正如很多人之前所发现的,要将一张图片存入数据库的BLOB字段,或者从数据库中取回图片,这并不是一件容易的事。在本文中,我们将向你展示如何使用Oracle来实现这一目的。
Oracle的BLOB数据类型用于存储二进制文件,其中包括图片,而且存储大小可以从4 KB到4 GB。最重要的是,我们可以存放任何格式的文件,而无需更改表结构。在本文中,我们将介绍如何使用Oracle框架来将大型二进制文件(如图片文件)存储在BLOB字段中,然后将其取回。
首先,在我们的表中创建一个BLOB字段。为了完成这一步,请登录Oracle控制台,然后在Oracle数据库中创建一个表,其中包含BLOB字段。可以使用以下SQL语句来完成:
“` sql
CREATE TABLE table_name
(
picture_id NUMBER,
picture_name VARCHAR2(100),
picture_data BLOB
);
接下来,我们需要在程序中插入图像,以便我们可以将图像存储到BLOB字段中。要做到这一点,我们需要在程序中使用java.sql.PreparedStatement,它允许我们将使用Parameterized Query传递的图像数据存储到BLOB字段中。插入图像的代码如下:
```javaString sql="INSERT INTO table_name (picture_id,picture_data) VALUES (?,?)";
PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1,picture_id);
ps.setBinaryStream(2,picture_data); ps.executeUpdate();
之后,我们将从BLOB中取出图像,而无需更改表结构。要做到这一点,我们需要使用PreparedStatement来执行“SELECT”查询,以便从BLOB字段中取出图像,例如:
“`java
String sql=”SELECT picture_data FROM table_name WHERE picture_id=?”;
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1,picture_id);
ResultSet rs = ps.executeQuery();
while(rs.next())
{
Blob blob=rs.getBlob(“picture_data”);
InputStream in = blob.getBinaryStream();
//Now You can do whatever You need with it
}
在上述代码中,我们只需要设置图像ID并调用PreparedStatement查询BLOB字段,就可以从取得BLOB字段中取出图像了。
从上面可以看出,使用Oracle的BLOB数据类型,我们可以轻松的取出图片上传到数据库中的BLOB数据。使用Oracle BLOB字段,你就可以轻松的将大型二进制文件存入数据库,不必担心结构的变更,并且方便的取出数据库中的BLOB。