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タイプの画像のみです。
-
JDBCを使用してMySQLデータベースにファイルを挿入/保存するにはどうすればよいですか?
通常、ファイルの内容は Clobに保存されます。 (TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT)MySQLデータベースのデータ型。 JDBCは、ファイルの内容をデータベースのテーブルに格納するためのClobデータ型のサポートを提供します。 setCharacterStream() PreparedStatementのメソッド インターフェイスは、パラメータのインデックスを表す整数と、パラメータとしてReaderオブジェクトを受け入れます。 そして、指定されたリーダーオブジェクト(ファイル)の内容を、指定されたインデックスのパラメーター(プレースホルダー)の値と
-
MicrosoftPowerPointを使用して画像を切り抜く方法
Microsoft PowerPoint 非常に強力なため、優れたプレゼンテーションを行うのに非常に役立ちます。私の投稿の1つで、PowerPointを使用して背景を削除する方法について説明しました。これにより、実際にMicrosoftPowerPointを使用して背景を削除できるようになりました。次に、画像を切り抜く方法を見てみましょう。 MicrosoftPowerPointを使用します。きっと驚かれることでしょう。 PowerPointを使用して画像を切り抜く PowerPointを使用して画像を切り抜くには: PowerPointを起動 画像を選択 フォーマット 切り抜きオ