SQLite SQLite Programm beendet/führt nicht weiter aus

XHann3sX

Aktives Mitglied
Hallo,


ich habe mich heute etwas mehr mit Datenbanken beschäftigt, dabei vorallem mit SQLLite ich wollte also einen Terminkalender schreiben , der die Termine halt in so einer Datenbank speichert also mit Datum, Beschreibung und evtl noch Ersteller , was aber erst unwichtig ist. Also wollte ich eine Test-Programme programmieren und etwas die Tutorials im Internet durcharbeiten und es kam dieses Programm zustande (schonmal Entschuldigung für die teils sinnlosen Variabeln Bezeichnungen etc. , habe die einfach so genannt :D

Java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SQLStuff {
    private static final SQLStuff stuff = new SQLStuff();
    private static Connection c;
    private static final String DB_PATH = System.getProperty("user.home")+"/"+"LOL.db";

    static{
        try {
            Class.forName("org.sqlite.JDBC");
        } catch (ClassNotFoundException e) {
            System.err.println("Der JDBC-Treiber konnte nicht geladen werden");
            e.printStackTrace();
        }
    }
    private SQLStuff(){
    }
  
    public static SQLStuff getInstance(){
        return stuff;
    }
      
  
    public void intialisiereDBConc(){
        try {
            if(c != null)
                return;  
            System.out.println("Verbindung wird hergestellt");
            c=DriverManager.getConnection("jdbc:sqlite:" + DB_PATH);
            if(!c.isClosed())  
                System.out.println("Verbindung hergestellt!");
  
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        /*Runtime.getRuntime().addShutdownHook(new Thread(){
            public void run() {
                try {
                    if(!c.isClosed() && c !=null){
                        c.close();
                    if(c.isClosed()){
                        System.out.println("Verbindung zur Datenbank wurde getrennt");
                    }
                    }
                } catch (SQLException e) {
                e.printStackTrace();
              
                }
            }
  
        });
*/
    }
  
    public void handelDB(){
        try {
            Statement st = c.createStatement();
            st.executeUpdate("DROP TABEL IF EXISTS lel;");
            st.executeUpdate("CREATE TABLE(Lel,lol,eier)");
            st.execute("INSERT INTO lel(Lel,lol,eier)VALUES(´Lel´,´LOL´,´3´");
            PreparedStatement pm = c.prepareStatement("INSERT INTO lel VALUES(?,?,?);");
            pm.setString(1, "lel");
            pm.setString(1, "Lol");
            pm.setInt(3, 5);
            pm.addBatch();
          
            c.setAutoCommit(false);
            pm.executeBatch();
            c.setAutoCommit(true);
          
            ResultSet rs = st.executeQuery("SELECT * FROM lel");
            while(rs.next()){
                System.out.println(rs.getString("Lel"));
                System.out.println(rs.getString("lol"));
                System.out.println(rs.getInt("eier"));
            }
        } catch (Exception e) {
        }
    }


}

Und hier noch die Main-Methode (ignoriert Version und MainFrame

Java:
public class MainClass {
    private final double VERSION = 0.5;

    public double getVERSION() {
        return VERSION;
    }
  
  
  
    public static void main(String[] args) {
    //MainFrame mf = new MainFrame();
        //mf.setVisible(true);
        SQLStuff ss = SQLStuff.getInstance();
        ss.intialisiereDBConc();
        ss.handelDB();
    }
  
  
}

undzwar sieht man in der DB-Hauptklasse , dass ein großer Bereich auskommentiert ist, da dieser immer ausgeführt wird , obwohl er ja eigentlich nur bei Beendigung ausgeführt werden soll oder beim Runterfahren und wenn ich das Programm mit diesen auskommentierten Zeilen starte , dann bleibt er bei der Konsolen-Ausgabe "Verbindung hergestellt!" und gibt nicht die Datenbank-Objekte aus.
Wie müsste ich das Programm ändern, das er mir die 2 gespeicherten Datenbank Objekte ausgibt ??

MFG
Hannes
 

Harry Kane

Top Contributor

XHann3sX

Aktives Mitglied
Oh, das mit der Exception habe ich wohl verpennt , die Blöcke generiert Eclispe ja von selbst :D
Oh ja es heißt TABLE ups, dass wird's wohl gewesen sein , werde gleich mal Testen

//Edit
Habe den Quelltext jetzt verbessert
Java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SQLStuff {
    private static final SQLStuff stuff = new SQLStuff();
    private static Connection c;
    private static final String DB_PATH = System.getProperty("user.home")+"/"+"LOL.db";

    static{
        try {
            Class.forName("org.sqlite.JDBC");
        } catch (ClassNotFoundException e) {
            System.err.println("Der JDBC-Treiber konnte nicht geladen werden");
            e.printStackTrace();
        }
    }
    private SQLStuff(){
    }
   
    public static SQLStuff getInstance(){
        return stuff;
    }
       
   
    public void intialisiereDBConc(){
        try {
            if(c != null)
                return;   
            System.out.println("Verbindung wird hergestellt");
            c=DriverManager.getConnection("jdbc:sqlite:" + DB_PATH);
            if(!c.isClosed())   
                System.out.println("Verbindung hergestellt!");
   
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        /*Runtime.getRuntime().addShutdownHook(new Thread(){
            public void run() {
                try {
                    if(!c.isClosed() && c !=null){
                        c.close();
                    if(c.isClosed()){
                        System.out.println("Verbindung zur Datenbank wurde getrennt");
                    }
                    }
                } catch (SQLException e) {
                e.printStackTrace();
               
                }
            }
   
        });
*/
    }
   
    public void handelDB(){
        try {
            Statement st = c.createStatement();
            st.executeUpdate("DROP [COLOR=#ff0000]TABLE[/COLOR] IF EXISTS lel[COLOR=#ff0000];");[/COLOR]
            st.executeUpdate("CREATE TABLE(Lel,lol,eier[COLOR=#ff0000]);"); [/COLOR]
            st.execute("INSERT INTO lel(Lel,lol,eier)VALUES(´Lel´,´LOL´,´3´)");
            PreparedStatement pm = c.prepareStatement("INSERT INTO lel VALUES(?,?,?);");
            pm.setString(1, "lel");
            pm.setString(1, "Lol");
            pm.setInt(3, 5);
            pm.addBatch();
           
            c.setAutoCommit(false);
            pm.executeBatch();
            c.setAutoCommit(true);
           
            ResultSet rs = st.executeQuery("SELECT * FROM lel");
            while(rs.next()){
                System.out.println(rs.getString("Lel"));
                System.out.println(rs.getString("lol"));
                System.out.println(rs.getInt("eier"));
            }
        } catch (Exception e) {
            [COLOR=#ff0000]e.printStackTrace();[/COLOR]
        }
    }


}

Nur wirft er mir jetzt diese Exception raus , die hatte er mir wohl aufgrund des fehlenden printStackTrace nicht gezeigt.

Java:
java.sql.SQLException: near "(": syntax error
    at org.sqlite.core.NativeDB.throwex(NativeDB.java:397)
    at org.sqlite.core.NativeDB._exec(Native Method)
    at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:116)
    at SQLStuff.handelDB(SQLStuff.java:64)
    at MainClass.main(MainClass.java:16)
 
Zuletzt bearbeitet:

XHann3sX

Aktives Mitglied
Ja, das war mir durch die Exception auch bewusst , dass in der Zeile was nicht stimmt, oder da in der Nähe, aber was :D Ich suche ja jetzt schon nach den ganzen SQL Sachen , da SQLite ja auch mit den SQL Statements arbeitet.
 

XHann3sX

Aktives Mitglied
Es müsste doch eigentlich die Zeile 64 sein , was diesem Code Abschitt entspräche
Java:
 <63>st.executeUpdate("DROP TABLE IF EXISTS lel;");
<64>st.executeUpdate("CREATE TABLE(Lel,lol,eier);");
<65>st.execute("INSERT INTO lel(Lel,lol,eier)VALUES(´Lel´,´LOL´,´3´)");
 

XHann3sX

Aktives Mitglied
Hmm, verstehe nicht ganz , wo der Fehler sein , aber da ich dieses statische eingefüge ja eh nicht unbedingt brauche , habe ich es einfach mal entfernt und es funktioniert auch alles und ich glaube es jetzt auch grundlegend verstanden zu haben. Hoffe ich kann es jetzt einfach so umsetzen, wäre trotzdem nett, wenn mir einer erklären könnte, wo der Fehler lag.

Edit. eine kleine Frage habe ich dann doch noch, warum gibt er bei der Ausgabe
Java:
ResultSet rs = st.executeQuery("SELECT * FROM lel");

            while(rs.next()){

                System.out.println(rs.getString("Lel"));

                System.out.println(rs.getString("lol"));

Beide aus? ist das durch diese executeQuery ?? und wenn ja was macht die Genau??Wäe nett wenn das noch einer kurz erklären kann und will.



Java:
    public void handelDB(){
        try {
            Statement st = c.createStatement();
            st.executeUpdate("CREATE TABLE IF NOT EXISTS lel(Lel,lol);");
            PreparedStatement pm = c.prepareStatement("INSERT INTO lel VALUES(?,?);");
            pm.setString(1, "lel");
            pm.setString(2, "Lol");
            pm.addBatch();
          
            pm.setString(1,"Test");
            pm.setString(2, "Hallo");
            pm.addBatch();
          
          
            c.setAutoCommit(false);
            pm.executeBatch();
            c.setAutoCommit(true);
          
            ResultSet rs = st.executeQuery("SELECT * FROM lel");
            while(rs.next()){
                System.out.println(rs.getString("Lel"));
                System.out.println(rs.getString("lol"));
              
            }
        } catch (Exception e) {
            e.printStackTrace();          
        }
    }


MFG
Hannes
 

Joose

Top Contributor
Hmm, verstehe nicht ganz , wo der Fehler sein , aber da ich dieses statische eingefüge ja eh nicht unbedingt brauche , habe ich es einfach mal entfernt und es funktioniert auch alles und ich glaube es jetzt auch grundlegend verstanden zu haben. Hoffe ich kann es jetzt einfach so umsetzen, wäre trotzdem nett, wenn mir einer erklären könnte, wo der Fehler lag.
Du hast vergessen eine Tabellennamen anzugeben ;)

Edit. eine kleine Frage habe ich dann doch noch, warum gibt er bei der Ausgabe
Java:
ResultSet rs = st.executeQuery("SELECT * FROM lel");
  while(rs.next()){
  System.out.println(rs.getString("Lel"));
  System.out.println(rs.getString("lol"));

Beide aus? ist das durch diese executeQuery ?? und wenn ja was macht die Genau??Wäe nett wenn das noch einer kurz erklären kann und will.

Durch das * werden alle Spalten selektiert und da es keine WHERE Bedingung gibt werden alles Datensätze selektiert.
 

XHann3sX

Aktives Mitglied
Achso , danke also hätte ich bei

Code:
st.executeUpdate("CREATE TABLE(Lel,lol,eier);");

einfach
Code:
st.executeUpdate("CREATE TABLE lel (Lel,lol,eier);");

machen müssen ??...... Ups , dann verstehe ich den Error natürlich auch , er weiß ja nicht welche DB er erstellen soll , aber egal Danke euch beiden für die Hilfe.
MFG
Hannes
 

XHann3sX

Aktives Mitglied
Hmm hat aber auch ohne geklappt .... oder ist das nicht gut ?? und wie macht gebe ich den Datentyp an ?? Das stand in keinem Tutorial , welches ich gesehen habe oder ich habe es überlesen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T SQLite Alternativen zu SQlite, dateibasiert, leicht verschlüsselbar, Nutzerverwaltung Datenbankprogrammierung 21
B SQLite + jdbc + IntelliJ-Consumer = "No suitable driver found..." Datenbankprogrammierung 15
Maxim6394 JPA 3.2 & SQLite - LocalDateTime wird falsch geladen Datenbankprogrammierung 1
Maxim6394 EclipseLink + SQLite | Unable to acquire a connection from driver [null] Datenbankprogrammierung 6
J SQLite Abfrage fehlerhaft - komme nicht weiter - please help. Datenbankprogrammierung 3
thor_norsk SQLite Fehlermeldung Datenbankprogrammierung 4
N JDBC SQLITE und Cascading Datenbankprogrammierung 2
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
B SQLite Befehl bauen? Datenbankprogrammierung 4
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
thobren Projekt SQlite! Wie kann ich auf auf SQlite Daten zugreifen? Datenbankprogrammierung 4
Davee SQLite SQLite Datenbank lässt sich nicht auf anderen PCs öffnen Datenbankprogrammierung 8
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
D SQLite Collections oder Arrays in SQLite abbilden Datenbankprogrammierung 7
N ORM für Sqlite Datenbankprogrammierung 4
M SQLite Datenbank mit SQLite Datenbankprogrammierung 7
N Sqlite DB mit Java wird auf Linuxsystem nicht gefunden Datenbankprogrammierung 9
N SQLite Datenbankprogrammierung 2
S Daten von SQLite Datenbank nutzen Datenbankprogrammierung 5
B SQLite Frage zu SQLite Datenbankverbindung Datenbankprogrammierung 7
E Sqlite-jdbc Mitliefern Datenbankprogrammierung 4
X Sqlite Fks Datenbankprogrammierung 4
C JDBC und SQLite Datenbank Datenbankprogrammierung 8
Sam96 SQLite mit JavaFX Datenbankprogrammierung 1
T sqlite select Datenbankprogrammierung 12
V SQLite Performance: 1 Datei mit einzelnen Einträgen gegenüber SQLite Datenbankprogrammierung 7
F Java SQLite Error Datenbankprogrammierung 19
F Sqlite cannot commit Datenbankprogrammierung 2
H SQLite Sqlite Datenbank direkt einbinden. Datenbankprogrammierung 5
U Dom Parser und SQLite füllen Datenbankprogrammierung 5
D SQLite Datenkbank auf WebServer möglich? Datenbankprogrammierung 4
M Datenbankausgabe .jsp per SQLite Datenbankprogrammierung 7
J SQLite Login Datenbank Datenbankprogrammierung 2
M SQLite Einstieg mit SQLite, wohin mit der DLL? Datenbankprogrammierung 7
M SQLite Speicherpfad Datenbankprogrammierung 0
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
G sqlite innerjoin Datenbankprogrammierung 5
G SQLite Daten aus SQLite DB in andere SQLite DB importieren Datenbankprogrammierung 4
R sqlite UPDATE wirkt nicht aus Java Datenbankprogrammierung 7
G SQLite SQLite Abfrage Datenbankprogrammierung 4
F SQLite-Extensions unter Java Datenbankprogrammierung 2
H SQLite mit DefaultTableModel synchronisieren Datenbankprogrammierung 5
D SQLite Statement nimmt keine Namen aus getter-Methoden Datenbankprogrammierung 11
L SQLite fügt nur den ersten Datensatz ein Datenbankprogrammierung 2
S SQLite Ausführbares Jar mit SQLite DB Datenbankprogrammierung 4
F [SQLite] Mehrere Datensätze einfügen Datenbankprogrammierung 12
H SQLite Datenkbank erstellen Datenbankprogrammierung 3
S Abfrage auf SQLite-DB Datenbankprogrammierung 2
Kasoki SQLite SQLite oder doch XML!? Datenbankprogrammierung 2
G SQLite Abfrage, ob in Tabelle X Spalte Y existiert Datenbankprogrammierung 4
G SQLJet (SQLite) - Mehrbenutzerzugriff auf Datenbank handhaben Datenbankprogrammierung 1
S SQLite in JAR Datenbankprogrammierung 8
J SQLite --> Java SDK Datenbankprogrammierung 7
P Datenbank für Java Anwendung wie SQLite ohne Installation Datenbankprogrammierung 4
P Sqlite API für JAVA ? Datenbankprogrammierung 9
feuervogel SQLite unter Linux mit Eclipse einrichten Datenbankprogrammierung 8
K SQLite Datenbankprogrammierung 5
S SQLite oder RDBMS als Datei(nicht Client/Server) Datenbankprogrammierung 5
M Programm auf dem PC bringen Datenbankprogrammierung 5
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
P USER Management in SQL übergreifend auf JAVA Programm Datenbankprogrammierung 1
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
J Brauche Hilfe bei meinem Programm ! Datenbankprogrammierung 12
W Wie liest dieses Java-Programm der Compiler? Datenbankprogrammierung 3
B Java Programm und Dantebank umlagern Datenbankprogrammierung 25
G Über Internet Datenbank mit Programm abrufen Datenbankprogrammierung 17
M Verbindung von Java Programm zur Acccess Datenbank (mdb-Datei) Datenbankprogrammierung 0
D Daten von einem Server in eigenem Java-Programm benutzen Datenbankprogrammierung 6
P MySQL Java Programm als Dienst MySQL Dump zurück spielen Datenbankprogrammierung 4
T Derby/JavaDB Zugriff auf DB mit exportiertem Programm Datenbankprogrammierung 12
P MySQL Datenbank aus Programm heraus starten Datenbankprogrammierung 3
S MySQL Einfügen in Tabelle nur von Programm zulassen Datenbankprogrammierung 7
C Programm wird nach DB-Eintrag nicht weitergeführt Datenbankprogrammierung 5
M Ein mit Netbeans entwickeltes Programm dokumentieren Datenbankprogrammierung 5
W SELECT oder Programm-Logik Datenbankprogrammierung 10
J Programm <> Datenbank wie effizient nutzen? Datenbankprogrammierung 3
H MySQL Programm mit Datenbank anbindung Datenbankprogrammierung 26
W Interaktion Java-Programm <-> Datenbank Datenbankprogrammierung 14
C H2 Datenbank mit Programm starten Datenbankprogrammierung 2
E MySQL Daten in die Datenbank eingeben via Java Programm Datenbankprogrammierung 3
O MySQL sql Datei einzelner Tabellen erzeugen (über Java Programm) Datenbankprogrammierung 6
J Mit Java Programm - PostgreSQL backup und restore Datenbankprogrammierung 5
R 1 Programm, 2 Datenbanken Datenbankprogrammierung 15
D Werte mit java programm in eine Datenbank einlesen Datenbankprogrammierung 7
S Access vom Programm aus starten Datenbankprogrammierung 8
A Java JDBC Programm bringt auf Unix Server Fehlermeldung Datenbankprogrammierung 4
G Mit Java-Programm Datenbank löschen/neu anlegen Datenbankprogrammierung 5
C Programm baut zu viele MySQL Verbindungen auf Datenbankprogrammierung 4
S Postgresql DB - Performancetest - Programm, Logfile etc. Datenbankprogrammierung 2
M vorschläge bzgl. java programm mit datenbankanbindung Datenbankprogrammierung 4
C wie soll ich eine bean in mein programm integriegren? Datenbankprogrammierung 2
B Importieren in MySQL mit Java-Programm Datenbankprogrammierung 2
B Exportieren aus MySQL mit Java-Programm Datenbankprogrammierung 11
P Wie übergebe ich einen NULL Wert in meinem Java-Programm? Datenbankprogrammierung 7
A Programm in Autostart startet bevor DB gestartet ist Datenbankprogrammierung 2
L Programm-Architektur bei DB-Zugriff Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben