Über eine einfache Schnittstelle kann man in Java eine Datenbank auslesen und die Inhalte in einem Objekt oder Array speichern. Die Ausgabe in der Console ist natürlich auch möglich.
In Java Datenbank auslesen
Zuerst muss man für MySQL den Treiber (oder einem anderem System) dem Projekt hinzufügen. Der Treiber ist eine Java-Bibliothek und muss im gleichen Ordner wie das Programm liegen. Das Folgende Beispiel ist für MySQL ausgelegt, jedoch lässt es sich sehr einfach für andere Datenbanksysteme wie MSSQL anpassen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * Das Programm erstellt eine Verbindung zu einer MySQL Datenbank her und ließt * die Daten von einer Tabelle aus. Dies kann beliebig erweitert werden. Hierzu * muss eine Bibliothek für MySQL importiert werden und benutzt werden. * * @author ST-Page.de * */ public class MiniDataBaseApp { private String db_host = "localhost"; private String db_port = "3306"; private String db_user = "root"; private String db_pass = ""; private String db_base = "phpmyadmin"; private static final String DRIVER = "com.mysql.jdbc.Driver"; private Connection connection = null; /** * Eine Verbindung zur Datenbank wird hergestellt und von einer Tabelle * werden alle Einträge ausgelesen. * * @throws SQLException * Wenn keine Verbindung zu einer Datenbank hergestellt werden * konnte. * @throws ClassNotFoundException * Wenn der Datenbanktreiber nicht gefunden werden konnte. */ public void createConnection() throws SQLException, ClassNotFoundException { // Treiber initialisieren Class.forName(DRIVER); // Uri für die Verbindung zu der Datenbank String mySqlUrl = "jdbc:mysql://" + db_host + ":" + db_port + "/" + db_base; // Verbindung herstellen. connection = DriverManager.getConnection(mySqlUrl, db_user, db_pass); } /** * Alle Einträge der Datenbanktabelle, werden in der Konsole gedruckt. Statt * {@link Statement} kann man auch {@link PreparedStatement} nutzen, welche * schneller eine Abfrage durchführen müssten. Die Abfragezeit beträgt ca. 2 * Sekunden. * * @param nameOfTable * Name der Tabelle, welche ausgelesen werden. * @throws SQLException * Wenn die Abfrage an der Datenbank nicht gemacht werden * konnte. */ public void showAll(String nameOfTable) throws SQLException { // Statement mit Benennung der Tablle String query = "SELECT * FROM " + nameOfTable; Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(query); int columns = rs.getMetaData().getColumnCount(); System.out.println("Alle Einträge zu den Personen "); System.out.println(); // Ich zeige die Tabellenspaltennamen an. for (int i = 1; i <= columns; i++) System.out.print(rs.getMetaData().getColumnLabel(i) + "\t\t"); System.out.println(); System.out.println(); // Ich zeige den Inhalt der Tabelle an. Normaler Weise würde man die // Ergebnisse in eine Liste schreiben und diese zurück liefern. while (rs.next()) { for (int i = 1; i <= columns; i++) { System.out.print(rs.getString(i) + "\t\t"); } System.out.println(); } // Ich schließe die Streams wieder und gebe die Tabelle wieder frei. rs.close(); stmt.close(); } /** * Ich schließe die Verbindung zu der Datenbank und gebe den Port am * Computer frei. * * @throws SQLException * Wenn die Verbindung nicht geschlossen werden konnte. */ public void closeProgramm() throws SQLException { this.connection.close(); } /** * Hier startet das Programm und ruft die einzelnen notwendigen Methoden * auf, die Methoden zum Bearbeiten der Datenbank können dazwischen stehen. * * @param args * Damit könnte man das Programms später noch steuern und mit * INSERT, DELETE, UPDATE arbeite. */ public static void main(String[] args) { MiniDataBaseApp app = new MiniDataBaseApp(); try { // Verbindung herstellen app.createConnection(); // Ergebnisse anzeigen. app.showAll("pma_history"); // Verbindung schließen app.closeProgramm(); } catch (SQLException e) { System.err.println("SQL Fehler - " + e.getLocalizedMessage()); e.printStackTrace(); } catch (ClassNotFoundException e) { System.err.println("Der Datenbank treiber wurde nicht gefunden. - " + e.getLocalizedMessage()); e.printStackTrace(); } // Programm beenden. System.exit(0); } } |
Für das obige Beispiel wurde vorher eine Datenbank mit folgendem SQL Statement eingerichtet.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
CREATE TABLE IF NOT EXISTS `personen` ( `id` int(11) NOT NULL auto_increment, `name` varchar(50) NOT NULL, `surname` varchar(50) default NULL COMMENT 'Vorname', `birth` date default NULL, `brith_place` varchar(20) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; -- -- Daten für Tabelle `personen` -- INSERT INTO `personen` (`id`, `name`, `surname`, `birth`, `brith_place`) VALUES (1, 'Brot', 'Bernd', NULL, NULL), (2, 'Scharf', 'Chilli', NULL, NULL), (3, 'Busch', 'Briegel', '1999-01-15', NULL); |
Im oberen Teil des MySQL Statement wird die Tabelle erzeugt und im unterem werden der Tabelle werden Daten hinzugefügt.
Folgende Treiber für verschiedene Datenbanksysteme können hier heruntergeladen werden: