1. Erstellen Sie eine Tabelle:
Kopieren Sie den Codecode wie folgt:
Tabelle löschen, falls Foto vorhanden;
TABELLE ERSTELLEN Foto (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) COMMENT 'name',
Foto-Blob KOMMENTIEREN Sie „Foto“
)
ENGINE=InnoDB
STANDARDZEICHENSATZ=utf8
COLLATE=utf8_general_ci;
Das Datenspeicherformat für Bilder in MySql ist der Blob-Typ. Blob ist ein Container, der Binärdateien speichern kann.
2. Schreiben Sie eine Toolklasse für den Zugriff auf Bildstream-Daten:
Kopieren Sie den Codecode wie folgt:
java.io.File importieren;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
öffentliche Klasse ImageUtil {
private statische Datei file = null;
/**
* Binärer Bildstrom aus lokaler Datei lesen
*
* @param infile
* @zurückkehren
*/
public static FileInputStream getImageByte(String infile) {
FileInputStream imageByte = null;
file = neue Datei(infile);
versuchen {
imageByte = new FileInputStream(file);
} Catch (FileNotFoundException e) {
e.printStackTrace();
}
return imageByte;
}
/**
* Lesen Sie den Bildstream als Bild
*
* @param inputStream
* @param Pfad
*/
public static void readBlob(InputStream inputStream, String path) {
versuchen {
FileOutputStream fileOutputStream = new FileOutputStream(path);
byte[] buffer = neues 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();
} Catch (IOException e) {
e.printStackTrace();
}
}
}
3. Lokale Dateien in der Datenbank speichern
Sie müssen den MySql-Datenbanktreiber hinzufügen – mysql-connector-java-5.1.24-bin.jar
Kopieren Sie den Codecode wie folgt:
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
öffentliche Klasse ImageInsert {
public static void main(String[] args) {
versuchen {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} Catch (InstantiationException e) {
e.printStackTrace();
} Catch (IllegalAccessException e) {
e.printStackTrace();
} Catch (ClassNotFoundException e) {
e.printStackTrace();
}
String user = "root";
String-Passwort = „root“;
String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8";
Verbindungsverbindung = null;
versuchen {
Verbindung = DriverManager.getConnection(URL, Benutzer, Passwort);
} Catch (SQLException e) {
e.printStackTrace();
}
PreparedStatement vorbereitetStatement = null;
InputStream inputStream = null;
inputStream = ImageUtil.getImageByte("D://temp//photo1.png");
versuchen {
String sql = "insert into photo(id,name,photo) Values(?,?,?)";
vorbereitetStatement = Connection.prepareStatement(sql);
vorbereitetStatement.setInt(1, 1);
vorbereitetStatement.setString(2, "Julie");
vorbereitetStatement.setBinaryStream(3, inputStream,
inputStream.available());
vorbereitetStatement.execute();
} Catch (SQLException e) {
e.printStackTrace();
} Catch (IOException e) {
e.printStackTrace();
} Endlich {
versuchen {
if (inputStream != null)
inputStream.close();
} Catch (IOException e) {
e.printStackTrace();
} Endlich {
versuchen {
if (preparedStatement != null)
vorbereitetStatement.close();
} Catch (SQLException e) {
e.printStackTrace();
} Endlich {
versuchen {
Verbindung.close();
} Catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
4. Bilder aus der Datenbank lesen und generieren
Kopieren Sie den Codecode wie folgt:
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
öffentliche Klasse ImageGet {
public static void main(String[] args) {
versuchen {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} Catch (InstantiationException e) {
e.printStackTrace();
} Catch (IllegalAccessException e) {
e.printStackTrace();
} Catch (ClassNotFoundException e) {
e.printStackTrace();
}
String user = "root";
String-Passwort = „root“;
String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8";
Verbindungsverbindung = null;
versuchen {
Verbindung = DriverManager.getConnection(URL, Benutzer, Passwort);
} Catch (SQLException e) {
e.printStackTrace();
}
Anweisungsanweisung = null;
ResultSet resultSet = null;
InputStream inputStream = null;
versuchen {
Anweisung = Verbindung.createStatement();
String sql = "select p.photo from photo p where id = 1";
resultSet = Statement.executeQuery(sql);
resultSet.next();
inputStream = resultSet.getBinaryStream("photo");
ImageUtil.readBlob(inputStream, "D://temp//photo2.png");
} Catch (SQLException e) {
e.printStackTrace();
} Endlich {
versuchen {
if (inputStream != null)
inputStream.close();
} Catch (IOException e) {
e.printStackTrace();
} Endlich {
versuchen {
if (resultSet != null)
resultSet.close();
} Catch (SQLException e) {
e.printStackTrace();
} Endlich {
if (Anweisung != null)
if (Anweisung != null)
versuchen {
Anweisung.close();
} Catch (SQLException e) {
e.printStackTrace();
} Endlich {
if (Verbindung != null)
versuchen {
Verbindung.close();
} Catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
}
5.Vorbei!