JDBC를 사용하여 데이터베이스에 이미지를 삽입하는 방법은 무엇입니까?

WBOY
풀어 주다: 2023-08-29 14:05:02
앞으로
810명이 탐색했습니다.

如何使用 JDBC 将图像插入数据库?

PreparedStatement인터페이스의 setBinaryStream() 메서드는 매개변수 인덱스와 InputStream 개체를 나타내는 정수를 받아들이고 매개변수를 지정된 InputStream 개체로 설정합니다. 매우 큰 이진 값을 전송해야 할 때마다 이 방법을 사용할 수 있습니다.

SQL 데이터베이스는 이미지와 같은 대용량 바이너리 데이터를 저장할 수 있는 Blob(Binary Large Object)이라는 데이터 유형을 제공합니다.

JDBC를 사용하여 이미지 저장

JDBC 프로그램을 사용하여 데이터베이스에 이미지를 저장해야 하는 경우 아래와 같이 Blob 데이터 유형의 테이블을 생성합니다.

CREATE TABLE Tutorial(Name VARCHAR(255), Type INT NOT NULL, Logo BLOB);
로그인 후 복사

이제 JDBC를 사용하여 데이터베이스에 연결하고 PreparedStatement 삽입을 준비합니다. 위에서 생성된 테이블에 값을 추가합니다.

String query = "INSERT INTO Tutorial(Name, Type, Logo) VALUES (?, ?, ?)";
PreparedStatement pstmt = con.prepareStatement(query);
로그인 후 복사

preparedStatement 인터페이스의 setter 메소드를 사용하여 자리 표시자의 값을 설정하고 setBinaryStream() 메소드를 사용하여 Blob 데이터 유형의 값을 설정합니다.

FileInputStream fin = new FileInputStream("javafx_logo.jpg");
pstmt.setBinaryStream(3, fin);
로그인 후 복사

Example

다음 예에서는 JDBC 프로그램을 사용하여 MySQL 데이터베이스에 이미지를 삽입하는 방법을 보여줍니다. 여기서는 Blob 데이터 유형이 포함된 테이블을 생성하고 테이블(Blob 유형의 BinaryStream 개체)에 값을 삽입한 다음 테이블의 내용을 검색합니다.

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class InsertingImageToDatabase {
   public static void main(String args[]) throws Exception {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating the Statement
      Statement stmt = con.createStatement();
      //Executing the statement
      String createTable = "CREATE TABLE Tutorial( "
         + "Name VARCHAR(255), "
         + "Type VARCHAR(50), "
         + "Logo BLOB)";
      stmt.execute(createTable);
      //Inserting values
      String query = "INSERT INTO Tutorial(Name, Type, Logo) VALUES (?, ?, ?)";
      PreparedStatement pstmt = con.prepareStatement(query);
      pstmt.setString(1, "JavaFX");
      pstmt.setString(2, "Java_library");
      FileInputStream fin = new FileInputStream("E:\images\javafx_logo.jpg");
      pstmt.setBinaryStream(3, fin);
      pstmt.execute();

      pstmt.setString(1, "CoffeeScript");
      pstmt.setString(2, "scripting Language");
      fin = new FileInputStream("E:\images\coffeescript_logo.jpg");
      pstmt.setBinaryStream(3, fin);
      pstmt.execute();
      pstmt.setString(1, "Cassandra");
      pstmt.setString(2, "NoSQL database");
      fin = new FileInputStream("E:\images\cassandra_logo.jpg");
      pstmt.setBinaryStream(3, fin);
      pstmt.execute();
      System.out.println("Data inserted");
      ResultSet rs = stmt.executeQuery("Select *from Tutorial");
      while(rs.next()) {
         System.out.print("Name: "+rs.getString("Name")+", ");
         System.out.print("Tutorial Type: "+rs.getString("Type")+", ");
         System.out.print("Logo: "+rs.getBlob("Logo"));
         System.out.println();
      }
   }
}
로그인 후 복사

Output

Connection established......
Data inserted
Name: JavaFX, Tutorial Type: Java_library, Logo: com.mysql.jdbc.Blob@7dc5e7b4
Name: CoffeeScript, Tutorial Type: scripting Language, Logo:
com.mysql.jdbc.Blob@1ee0005
Name: Cassandra, Tutorial Type: NoSQL database, Logo: com.mysql.jdbc.Blob@75a1cd57
로그인 후 복사

참고: JDBC 프로그램을 사용하면 .gif, .jpeg 또는 .png 유형 이미지만 저장하고 검색할 수 있습니다.

위 내용은 JDBC를 사용하여 데이터베이스에 이미지를 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿