MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

JDBCを使用してデータベースに画像を挿入する方法は?


setBinaryStream() PreparedStatementのメソッド インターフェイスは、パラメータと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);

以下は、JDBCプログラムを使用してMySQLデータベースに画像を挿入する方法を示す例です。ここでは、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();
      }
   }
}

出力

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タイプの画像のみです。


  1. JDBCを使用してMySQLデータベースにファイルを挿入/保存するにはどうすればよいですか?

    通常、ファイルの内容は Clobに保存されます。 (TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT)MySQLデータベースのデータ型。 JDBCは、ファイルの内容をデータベースのテーブルに格納するためのClobデータ型のサポートを提供します。 setCharacterStream() PreparedStatementのメソッド インターフェイスは、パラメータのインデックスを表す整数と、パラメータとしてReaderオブジェクトを受け入れます。 そして、指定されたリーダーオブジェクト(ファイル)の内容を、指定されたインデックスのパラメーター(プレースホルダー)の値と

  2. MicrosoftPowerPointを使用して画像を切り抜く方法

    Microsoft PowerPoint 非常に強力なため、優れたプレゼンテーションを行うのに非常に役立ちます。私の投稿の1つで、PowerPointを使用して背景を削除する方法について説明しました。これにより、実際にMicrosoftPowerPointを使用して背景を削除できるようになりました。次に、画像を切り抜く方法を見てみましょう。 MicrosoftPowerPointを使用します。きっと驚かれることでしょう。 PowerPointを使用して画像を切り抜く PowerPointを使用して画像を切り抜くには: PowerPointを起動 画像を選択 フォーマット 切り抜きオ