Benutzer-Werkzeuge

Webseiten-Werkzeuge


usercontent:sqlite_datenbank

Sqlite Datenbank

SQLite ist eine sehr leistungsfähige SQL-Datenbank die unter anderem direkt in Java-Programme integriert werden kann. Ein großer Vorteil der Datenbank ist das diese als Public Domain völlig frei ist. Zudem verwaltet Sie alle Daten (Tabellen, Index usw.) in nur einer einzigen Datei, was die Weitergabe von Datenbanken erleichtert.

Notwendiger Treiber

SQLite ist eigentlich in C geschrieben. Für Java exestiert jedoch ein JDBC-Treiber, welcher bereits die kompilierten C-Dateien für Windows, Linux und Mac beinhaltet. Man benötigt also außer diesem Treiber keinerlei weitere Dateien. Der treiber ist erhältlich über folgende Seite:

Bei dem Treiber handelt es sich um eine JAR-Datei, welche einfach in den Klassenpfad eingebunden wird. Bei Netbeans also einfach in der Produkthierarchie unter Libraries angeben.

Datenbankverbindung aufbauen

  //Öffnet Datenbank - Erzeugt eine wenn nicht vorhanden
    public Connection connection(Path dateiname) {
        connection = null;
 
        SQLiteConfig config = new SQLiteConfig();
        // config.setReadOnly(true);   
        config.setSharedCache(true);
        config.setLockingMode(SQLiteConfig.LockingMode.EXCLUSIVE);
        config.enforceForeignKeys(true);
 
        try {
            Class.forName("org.sqlite.JDBC");
            connection = DriverManager.getConnection("jdbc:sqlite:" + dateiname.toString(),config.toProperties());
 
        } catch (ClassNotFoundException | SQLException ex) {
            Logger.getLogger(DBService.class.getName()).log(Level.SEVERE, null, ex);
        }
 
        return (connection);
    }

Tabelle anlegen

 public void createDatenbank() {
        Statement stmt = null;
 
        try {
            stmt = connection().createStatement();
            stmt.executeUpdate("drop table if exists demotabelle;");
            String sql = "CREATE TABLE IF NOT EXISTS [demotabelle] ("
                //    + "id INTEGER PRIMARY KEY AUTOINCREMENT,"
                    + "'beschreibung' TEXT PRIMARY KEY,"
                    + "'url' TEXT,"
                    + "'benutzername' TEXT,"
                    + "'kategorie' TEXT,"
                    + "'zahl' INTEGER"
                    + ");";
            stmt.executeUpdate(sql);
        } catch (SQLException ex) {
            Logger.getLogger(DBService.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException ex) {
                    Logger.getLogger(DBService.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
 
        }
    }

Daten aufnehmen

    try {
            Connection conn = DBService.getInstance().connection();
            Statement statement = conn.createStatement();
            statement.setQueryTimeout(30);  // set timeout to 30 sec.
 
            statement.executeUpdate("insert into demotabelle(beschreibung,url,benutzername) values('testbezeichnung', 'testurl','max')");
 
        } catch (SQLException ex) {
            Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
        }

Tabellen und Spaltennamen ausgeben

//Gibt Tabellennamen und Spaltennamen über Console aus
    public void info() {
 
        ResultSet rs = null;
        DatabaseMetaData meta;
 
        try {
            meta = connection().getMetaData();
            rs = meta.getTables(null, null, null, new String[]{"TABLE"});
            System.out.println("Name der enthaltenen Tabellen:");
            while (rs.next()) {
                String tableName = rs.getString("TABLE_NAME");
                System.out.println(tableName);
            }
            System.out.println("---------------------");
 
            meta = connection().getMetaData();
            rs = meta.getTables(null, null, null, new String[]{"TABLE"});
            System.out.println("Auflistung der Spaltennamen");
            while (rs.next()) {
                String tableName = rs.getString("TABLE_NAME");
                System.out.println("Spalten in der Tabelle " + tableName + ":");
                ResultSet columns = meta.getColumns(null, null, tableName, null);
                int i = 1;
                while (columns.next()) {
                    System.out.printf("%d: %s (%d)\n", i++, columns.getString("COLUMN_NAME"), columns.getInt("ORDINAL_POSITION"));
                }
                System.out.println("---------------------");
            }
 
        } catch (SQLException ex) {
            Logger.getLogger(DBService.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

Beispiel getestet mit Version

ab Java 8

Autor

Siehe auch

usercontent/sqlite_datenbank.txt · Zuletzt geändert: 08/12/2014 16:02 von 84.185.13.173