数据库直接放图片,不放地址
时间: 2023-07-28 13:26:28 浏览: 48
是的,可以将图片以BLOB格式直接存储在数据库中,而不是存储图片的地址。以下是将图片存储为BLOB格式并将其插入到Oracle数据库中的步骤:
1. 创建一个用于存储图片数据的表。例如:
```
CREATE TABLE myTable (
id NUMBER,
image BLOB
);
```
2. 使用Java将图片转换为BLOB格式。假设图片文件路径为`/path/to/image.jpg`,可以使用以下代码将其转换为BLOB格式:
```
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
// Connect to database
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "myUsername";
String password = "myPassword";
Connection conn = DriverManager.getConnection(url, user, password);
// Convert image to BLOB
InputStream inputStream = new FileInputStream("/path/to/image.jpg");
PreparedStatement statement = conn.prepareStatement("INSERT INTO myTable (id, image) VALUES (?, ?)");
statement.setInt(1, 1);
statement.setBlob(2, inputStream);
statement.executeUpdate();
inputStream.close();
// Close connection
conn.close();
```
3. 在PL/SQL中查看图片。可以使用以下代码在PL/SQL中查看图片:
```
DECLARE
v_blob BLOB;
v_lob_length INTEGER;
BEGIN
SELECT image INTO v_blob FROM myTable WHERE id = 1;
v_lob_length := DBMS_LOB.getlength(v_blob);
IF v_lob_length > 0 THEN
OWA_UTIL.mime_header('image/jpeg', FALSE);
HTP.p('Content-length: ' || v_lob_length);
HTP.p('');
DBMS_LOB.read(v_blob, v_lob_length, 1);
END IF;
END;
```
这将在PL/SQL中显示ID为1的图片。