1. テーブルを作成します。
次のようにコードをコピーします。
写真が存在する場合はテーブルを削除します。
テーブルの作成 写真 (
id INT NOT NULL AUTO_INCREMENT 主キー、
名前 VARCHAR(100) COMMENT '名前',
写真ブロブ コメント「写真」
)
ENGINE=InnoDB
デフォルトの文字セット=utf8
COLLATE=utf8_general_ci;
MySql における画像のデータ保存形式は BLOB 型であり、Blob はバイナリ ファイルを保存できるコンテナです。
2. 画像ストリーム データ アクセス用のツール クラスを作成します。
次のようにコードをコピーします。
java.io.ファイルをインポートします。
java.io.FileInputStreamをインポートします。
インポートjava.io.FileNotFoundException;
java.io.FileOutputStreamをインポートします。
インポート java.io.IOException;
java.io.InputStreamをインポートします。
パブリック クラス ImageUtil {
プライベート静的ファイル file = null;
/**
* ローカルファイルから画像のバイナリストリームを読み取ります
*
* @param infile
* @戻る
*/
public static FileInputStream getImageByte(String infile) {
FileInputStream imageByte = null;
ファイル = 新しいファイル(infile);
試す {
imageByte = 新しい FileInputStream(ファイル);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
画像バイトを返します。
}
/**
* ピクチャストリームをピクチャとして読み込む
*
* @param入力ストリーム
* @パラメータパス
*/
public static void readBlob(InputStream inputStream, String path) {
試す {
FileOutputStream fileOutputStream = 新しい FileOutputStream(パス);
byte[] バッファ = 新しいバイト [1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, len);
}
inputStream.close();
fileOutputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} キャッチ (IOException e) {
e.printStackTrace();
}
}
}
3. ローカル ファイルをデータベースに保存する
MySql データベース ドライバー --mysql-connector-java-5.1.24-bin.jar を追加する必要があります。
次のようにコードをコピーします。
インポート java.io.IOException;
java.io.InputStreamをインポートします。
java.sql.Connectionをインポートします。
java.sql.DriverManagerをインポートします。
インポートjava.sql.PreparedStatement;
インポート java.sql.SQLException;
パブリック クラス ImageInsert {
public static void main(String[] args) {
試す {
Class.forName("com.mysql.jdbc.Driver").newInstance();
catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
文字列ユーザー = "ルート";
文字列パスワード = "root";
文字列 URL = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8";
接続接続 = null;
試す {
接続 = DriverManager.getConnection(url, ユーザー, パスワード);
} キャッチ (SQLException e) {
e.printStackTrace();
}
PreparedStatement 準備されたステートメント = null;
入力ストリーム入力ストリーム = null;
inputStream = ImageUtil.getImageByte("D://temp//photo1.png");
試す {
String sql = "写真(id,name,photo)の値(?,?,?)に挿入";
準備されたステートメント = connection.prepareStatement(sql);
準備済みステートメント.setInt(1, 1);
prepareStatement.setString(2, "ジュリー");
prepareStatement.setBinaryStream(3, inputStream,
inputStream.available());
準備されたステートメント.execute();
} キャッチ (SQLException e) {
e.printStackTrace();
} キャッチ (IOException e) {
e.printStackTrace();
} ついに {
試す {
if (inputStream != null)
inputStream.close();
} キャッチ (IOException e) {
e.printStackTrace();
} ついに {
試す {
if (preparedStatement != null)
準備されたステートメント.close();
} キャッチ (SQLException e) {
e.printStackTrace();
} ついに {
試す {
connection.close();
} キャッチ (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
4. データベースから画像を読み取って生成する
次のようにコードをコピーします。
インポート java.io.IOException;
java.io.InputStreamをインポートします。
java.sql.Connectionをインポートします。
java.sql.DriverManagerをインポートします。
インポートjava.sql.ResultSet;
インポート java.sql.SQLException;
java.sql.Statementをインポートします。
パブリック クラス ImageGet {
public static void main(String[] args) {
試す {
Class.forName("com.mysql.jdbc.Driver").newInstance();
catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
文字列ユーザー = "ルート";
文字列パスワード = "root";
文字列 URL = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8";
接続接続 = null;
試す {
接続 = DriverManager.getConnection(url, ユーザー, パスワード);
} キャッチ (SQLException e) {
e.printStackTrace();
}
ステートメント ステートメント = null;
結果セット結果セット = null;
入力ストリーム入力ストリーム = null;
試す {
ステートメント = connection.createStatement();
String sql = "ID = 1 の写真 p から p.photo を選択";
resultSet = ステートメント.executeQuery(sql);
resultSet.next();
inputStream = resultSet.getBinaryStream("写真");
ImageUtil.readBlob(inputStream, "D://temp//photo2.png");
} キャッチ (SQLException e) {
e.printStackTrace();
} ついに {
試す {
if (inputStream != null)
inputStream.close();
} キャッチ (IOException e) {
e.printStackTrace();
} ついに {
試す {
if (resultSet != null)
resultSet.close();
} キャッチ (SQLException e) {
e.printStackTrace();
} ついに {
if (ステートメント != null)
if (ステートメント != null)
試す {
ステートメント.close();
} キャッチ (SQLException e) {
e.printStackTrace();
} ついに {
if (接続 != null)
試す {
connection.close();
} キャッチ (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
}
5.終わり!