1 Einleitung Beim Gestalten einer Datenbank ist es unumgänglich Bilder oder Audiodateien in die Datenbank einzufügen. Generell können wir den Aufwand des direkten Einfügens in die Datenbank vermeiden, indem wir statt der Datei selbst den entsprechenden Speicherort der Bilddatei einfügen. Manchmal ist das Einfügen von Bildern in MySQL jedoch einfacher. Wie speichert man es also in MySQL? Referenz [1] enthält ein recht anschauliches Beispiel, das allerdings auf dem grafischen MySQL-Abfragetool Query Browser basiert. Wenn Sie es nicht auf Ihrem Rechner installiert haben, ist es für Sie möglicherweise nicht leicht verständlich. Ich werde hier nicht ins Detail gehen. Ausführlichere Informationen finden Sie unter dem angegebenen Link. Darüber hinaus veranschaulicht das Beispiel in [1] lediglich die Benutzerfreundlichkeit und Leistungsfähigkeit des Query Browsers, hat aber für unsere Entwicklung keinen großen praktischen Nutzen. Verwenden wir also JAVA, um ein einfaches Beispiel für die Datenspeicherung in MySQL zu schreiben. 2 Erstellen Sie eine Tabelle Zuerst müssen Sie eine Tabelle in der Datenbank erstellen. Ich habe eine Tabelle namens „Pic“ in einer Datenbank namens „Test“ erstellt. Die Tabelle enthält drei Spalten: IDpic, Beschriftung und Bild. Dabei ist „idpic“ der Primärschlüssel, „caption“ die Beschreibung des Bildes und „img“ die Bilddatei selbst. Die SQL-Anweisung zum Erstellen der Tabelle lautet wie folgt: Tabelle löschen, wenn `test`.`pic` vorhanden ist; TABELLE `test`.`pic` erstellen ( `idpic` int(11) NICHT NULL auto_increment, `caption` varchar(45) NICHT NULL Standard '', `img` longblob NICHT NULL, PRIMÄRSCHLÜSSEL (`idpic`) )ENGINE=InnoDB STANDARD-CHARSET=utf8; Geben Sie die obige Anweisung in die Befehlszeile ein (wenn der Query Browser installiert ist, können Sie zum Erstellen der Tabelle den Anweisungen in Referenz [1] folgen, was bequemer ist.), führen Sie sie aus und die Tabelle wird erfolgreich erstellt. 3 Implementieren der Bildspeicherklasse Nachdem die Tabelle fertig ist, beginnen wir mit dem Schreiben einer Java-Klasse, um den Vorgang des Einfügens von Bildern in die Datenbank abzuschließen. Wir wissen, dass Java- und Datenbankverbindungen über JDBC-Treiber hergestellt werden. Ich verwende MySQL Connector/J von der MySQL-Website. Wenn Sie einen anderen Treibertyp verwenden, kann es in der folgenden Implementierung zu geringfügigen Abweichungen kommen. 3.1 JDBC-Treiber laden und Verbindung herstellen Die im JDK bereitgestellte DriverManager-Schnittstelle wird verwendet, um die Verbindung zwischen Java-Anwendung und JDBC-Treiber zu verwalten. Bevor diese Schnittstelle verwendet wird, muss DriverManager den JDBC-Treiber kennen, mit dem eine Verbindung hergestellt werden soll. Am einfachsten ist es, mit Class.forName() die Schnittstellenklasse zu registrieren, die java.sql.Driver bei DriverManager implementiert. Für MySQL Connector/J lautet der Klassenname com.mysql.jdbc.Driver. Das folgende einfache Beispiel zeigt, wie der Connector/J-Treiber registriert wird. importiere java.sql.Connection; importiere java.sql.DriverManager; importiere java.sql.SQLException; öffentliche Klasse LoadDriver { öffentliche statische void main(String[] args) { versuchen { // Der Aufruf von newInstance() ist ein Workaround für einige // defekte Java-Implementierungen Klasse.fürName("com.mysql.jdbc.Driver").neueInstanz(); // Verbindung con = DriverManager.getConnection(……) // ... } Fang (Ausnahme ex) { // den Fehler behandeln } } Nachdem wir den Treiber bei DriverManager registriert haben, können wir die Verbindung zur Datenbank herstellen, indem wir die Methode 3.2 Vorbereitete Anweisung Nachdem wir die obigen Schritte abgeschlossen haben, können wir über die hergestellte Verbindung eine Statement-Schnittstellenklasse erstellen, um einige SQL-Anweisungen auszuführen. Im folgenden Beispiel verwende ich PreparedStatement und CallableStatement, die einige gespeicherte Prozeduren und Funktionen ausführen können, auf die ich hier aber nicht näher eingehen werde. Der folgende Codeausschnitt fügt einen Datensatz in die Bildtabelle ein. Dabei erhält (1) das Objekt con der Schnittstelle Connection die vorkompilierte SQL-Anweisung durch Aufruf der Methode prepareStatement, (2) weist dem ersten Fragezeichen der Insert-Anweisung einen Wert zu, (3) weist dem zweiten einen Wert zu und (4) weist dem dritten einen Wert zu. Dieser Schritt ist auch der bemerkenswerteste. Die verwendete Methode ist setBinaryStream(). Der erste Parameter 3 bezieht sich auf das dritte Fragezeichen, fis ist ein binärer Dateistream und der dritte Parameter ist die Länge des Dateistreams. Vorbereitete Anweisung ps; … ps = con.prepareStatement("in PIC-Werte einfügen (?,?,?)"); // (1) ps.setInt(1, id); //(2) ps.setString(2, datei.getName()); (3) ps.setBinaryStream(3, fis, (int)Dateilänge()); (4) ps.executeUpdate(); … 3.3 Vollständiger Code Der vollständige Code ist oben aufgeführt. Paket com.forrest.storepic; importiere java.io.File; importiere java.io.FileInputStream; importiere java.sql.Connection; importiere java.sql.DriverManager; importiere java.sql.PreparedStatement; importiere java.sql.ResultSet; importiere java.sql.SQLException; /** * Diese Klasse beschreibt, wie Bilddateien in MySQL gespeichert werden. * @Autor Yanjiang Qian * @version 1.0 02. Januar 2006 */ öffentliche Klasse StorePictures { privater String dbDriver; privater String dbURL; privater String dbUser; privater String dbPassword; private Verbindung con; privates PreparedStatement ps; öffentliche StorePictures() { dbDriver = "com.mysql.jdbc.Driver"; dbURL = "jdbc:mysql://localhost:3306/test"; dbUser = "root"; dbPassword = "Administrator"; initDB(); } öffentliche StorePictures(String strDriver, String strURL, String strUser, String strPwd) { dbDriver = strDriver; dbURL = strURL; dbUser = strUser; dbPassword = strPwd; initDB(); } öffentliche Leere initDB() { versuchen { // Treiber laden Klasse.fürName(dbDriver).newInstance(); // Verbindung herstellen con = DriverManager.getConnection(dbURL, dbBenutzer, dbPasswort); } Fang(ClassNotFoundException e) { System.out.println(e.getMessage()); } Fang(SQLException Beispiel) { // Behandeln Sie alle Fehler System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("Lieferantenfehler: " + ex.getErrorCode()); } Fang (Ausnahme e) { System.out.println(e.getMessage()); } } öffentliches boolean storeImg(String strFile) löst Exception aus { Boolescher Wert geschrieben = false; wenn (con == null) geschrieben = falsch; anders { Int-ID = 0; Datei Datei = neue Datei (strFile); FileInputStream fis = neuer FileInputStream(Datei); versuchen { ps = con.prepareStatement("SELECT MAX(idpic) FROM PIC"); Ergebnismenge rs = ps.executeQuery(); if(rs != null) { während(rs.next()) { id = rs.getInt(1)+1; } } anders { Rücksendung schriftlich; } ps = con.prepareStatement("einfügen " + "in PIC-Werte (?,?,?)"); ps.setInt(1, id); ps.setString(2, file.getName()); ps.setBinaryStream(3, fis, (int) Datei.Länge()); ps.executeUpdate(); geschrieben = wahr; } Fang (SQLException e) { geschrieben = falsch; System.out.println("SQLException: " + e.getMessage()); System.out.println("SQLState: " + e.getSQLState()); System.out.println("Lieferantenfehler: " + e.getErrorCode()); e.printStackTrace(); Endlich ps.schließen(); fis.schließen(); // db con schließen con.schließen(); } } Rücksendung schriftlich; } /** * Startpunkt des Programms * @param args CMD-Zeile */ öffentliche statische void main(String[] args) { wenn(args.length != 1) { System.err.println("java StorePictures Dateiname"); System.exit(1); } Boolesche Flagge = falsch; StorePictures sp = neue StorePictures(); versuchen { Flag = sp.storeImg(args[0]); } Fang (Ausnahme e) { e.printStackTrace(); } wenn(Flagge) { System.out.println("Bild-Upload erfolgreich."); } anders { System.out.println("Das Hochladen des Bildes ist fehlgeschlagen."); } } } 4 Fazit An dieser Stelle haben wir den gesamten Prozess des Speicherns von Bildern in MySQL vorgestellt. Dieses Beispiel ist das einfachste. Leser können je nach Bedarf weitere Funktionen hinzufügen, z. B. Dateien lesen, löschen usw., um das gesamte Programm zu perfektionieren. Beim Schreiben dieses Artikels habe ich mich hauptsächlich auf die Referenz [2] bezogen, für die ich an dieser Stelle danken möchte. Referenz [3] ist ein sehr schönes Beispiel, das nicht nur das Speichern, sondern auch das Lesen ermöglicht und eine sehr intuitive grafische Oberfläche hat. Wer interessiert ist, kann es eingehend studieren. Oben ist die Methode zum Speichern von Bildern in MySQL, die ich Ihnen vorgestellt habe. Ich hoffe, sie wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: Einführung, Installation und Verwendung von Hyper-V (detaillierte Abbildungen)
>>: Einfache Schritte zur Implementierung der Autorisierung eines öffentlichen H5 WeChat-Kontos
Vorwort Im WeChat-Applet können Sie globalData vo...
Inhaltsverzeichnis brauchen: Wichtige Punkte: Anh...
Wenn Sie MySQL zum ersten Mal lernen, verstehen S...
Dieser Blog ist eine Arbeitsnotiz Umfeld: Nginx-V...
Wenn Server B (172.17.166.11) eingeschaltet oder ...
Inhaltsverzeichnis 1. Vergleich der Daten vor und...
Nachdem der Server, auf dem sich Docker befindet,...
Das mit dem offiziellen Docker-Register erstellte...
Einführung in Debian Debian bezeichnet im weitere...
Welches dieser Formate (GIF, PNG oder JPG) sollte...
Inhaltsverzeichnis 3 Möglichkeiten zum Bereitstel...
Der Tomcat-Server ist ein kostenloser und quellof...
Flex-Layout ist heutzutage eine häufig verwendete...
Wenn wir eine Hintergrundfarbe mit Farbverlauf er...
Als ich kürzlich Django lernte, musste ich eine D...