学校はMySQLのテーブルしようとする場合、私はそれがフォルダを使用している店舗の記事や写真やビデオへの長い道のり、データベースへのファイルパス再訪預金知っているが、また、テキストを配置しています。しかし、それでもまだ、私は直接データベース・アクセスの写真をMySQLへの試してみたいです。ここで私は、Java言語とJDBC実装を使用します
mysqlデータベースは、バイナリ型があるタイプBLOB型、があり、我々はバイナリし、データベースに保存され、ブロブは、次のカテゴリに分類への通常の画像やオーディオファイルやビデオファイル:
- TINYBLOB最大255
- ブロブの最大65K
- MEDIUMBLOB最大16M
- LONGBLOB最大4G
JDBC接続に加えて、我々は、入力ファイル、出力ストリームを使用する必要があります。二つの方法、データベース内のデータベースから画像を読み取る別の方法を、画像を保存する方法を実装し、ローカルコンピュータを提示
輸入 java.io. * ;
インポート java.sqlの。* ;
インポートのjava.sql.DriverManager。
インポートのjava.sql.ResultSet;
輸入ます。java.sql.SQLException;
インポートjava.util.Scanner;
パブリック クラスデータベース{
// JDBCドライバ名
文字列JDBC_DRIVER = "はcom.mysql.jdbc.Driver" 。
// データベースURL:ここでのTTは、データベース名である
文字列JDBC_URL = ":MySQLの:// localhostを:JDBC?3306 / daImage useSslオプション=偽&serverTimezone = UTC" ;
// データベースのユーザー名とパスワードの
文字列USER =「ルート」。
文字列PASSは "admin123"を= 。
// 接続オブジェクトを取得するためにDriverManagerクラスを介してデータベースにアクセスする
接続の接続= ヌル。
// 接続による静的SQLステートメントを実行するために結果オブジェクトを取得する
// ;声明=ヌルの声明の
PreparedStatementのPreparedStatementの= nullを。
文字列のパス。
FileInputStreamをFileInputStreamを;
データベース(){
// JDBCドライバに登録する
試みを{
Class.forNameの(JDBC_DRIVER)。
// データベース接続:DriverManagerクラスのgetConnectionメソッドによって、三つの引数:データベースのURL、ユーザ名、ユーザパスワード、接続オブジェクトがインスタンス化された
接続を= したDriverManager.getConnection(JDBC_URL、USER、PASS)。
} キャッチ(ClassNotFoundExceptionが電子){
e.printStackTrace();
} キャッチ(のSQLException e)の{
e.printStackTrace();
}
}
公共 のボイドの追加(){
// データベースクエリーを定義します。Query AAテーブル名、性別2つのデータ
文字列のSQL =「INSERT INTO taImage値(,, ???)」;
//は、 画像を読み取る、上の画像私は手動にここにいるように、ローカルコンピュータには、パスのコピー
ファイルファイル= 新しい新しいファイル(「/ユーザ/ liuliu /デスクトップ/ vv.jpegを」);
してみてください{
FileInputStreamのFiを = 新しいFileInputStreamを(ファイル);
PreparedStatementの = のConnection.prepareStatement(SQL)。
preparedStatement.setInt( 1、2 )。
(PreparedStatement.setString 2、 "ピクチャ" )。
preparedStatement.setBlob( 3 、FI)。
// クエリ実行
INTを = F )(PreparedStatement.executeUpdate。
もし(F> 0 ){
System.out.println( "成功INSERT" );
} 他{
System.out.println( "挿入に失敗しました" );
}
preparedStatement.close();
connection.close();
} キャッチ(のSQLException e)の{
e.printStackTrace();
} キャッチ(にFileNotFoundException電子){
e.printStackTrace();
}
}
公共の 無効(選択){
ブロブGET_IMAGE。
SQL文字列 = "taImageからSELECT *" ;
試して{
// 指定したパスに格納されたリード・イメージ
のFileOutputStreamたFileOutputStream = 新新のFileOutputStream( "/ユーザ/ liuliu /デスクトップ/ bb.jpgは" );
PreparedStatementの = のConnection.prepareStatement(SQL)。
ResultSetたresultSet = preparedStatement.executeQuery()。
一方、(resultSet.next()){
GET_IMAGE = ResultSet.getBlob( "写真" );
//は バイトストリームにBlobオブジェクトに読み出さ
のinputStream = get_image.getBinaryStream();
int型A、
バイト B [] = 新しい新しい バイト [1014 ];
一方、(( InputStream.read = A(B))!= -1 ){
fileOutputStream.write(B、 0 );
}
}
} キャッチ(のSQLException e)の{
e.printStackTrace();
} キャッチ(にFileNotFoundException電子){
e.printStackTrace();
} キャッチ(IOExceptionを電子){
e.printStackTrace();
}
}
}