HSQLDB und Variablen

Status
Nicht offen für weitere Antworten.

xquadrat

Mitglied
Hallo,
Ich habe folgendes Problem:

ich möchte aus einer anderen Klasse die funktion insertKonto aufrufen und hier die dort abgefragte Kontonummer übergeben. Schreibe ich in die Zeile
Code:
sqlQuery = "INSERT INTO konto (KTO_NR) VALUES(Kontonummer)";

bekomme ich die Fehlermeldung KONTONUMMER not found. Trage ich hier einfach ein paar Ziffern ein, funktioniert es wie gewollt... wie kann ich der Datenbank klarmachen, dass ich hier den Wert der Variablen will?

Code:
package javadb;

import java.sql.*;
import java.util.Date;

public class KontoDB{
    public static void main(String [] args) throws SQLException, ClassNotFoundException{
        Class.forName("org.hsqldb.jdbcDriver");
        Connection con = DriverManager.getConnection(
                "jdbc:hsqldb:file:myDBs/userDB;shutdown=true","sa","");
        
        Statement stmt = con.createStatement();
        PreparedStatement prepStmt = null;
        ResultSet rs = null;

        
        con.close();
        System.out.println("TEST");
    }  // end of main
//  -----------------------------------------------------------------------
//  Buchung in Tabelle buchungen einfügen
//  ----------------------------------------------------------------------
    public void insertBuchung(String sqlQuery, Statement stmt, double Betrag, Date Datum, int Gegenkonto)
    throws SQLException, ClassNotFoundException {
        
         sqlQuery = "INSERT INTO buchungen (K_ID, Betrag, Datum, Gegenkonto) " +
                "VALUES(1, Betrag, Datum, Gegenkonto)";
         stmt.executeQuery(sqlQuery);
    }
    
//  -----------------------------------------------------------------------
//  Konto in Tabelle konten einfügen
//  ----------------------------------------------------------------------
    public void insertKonto(String sqlQuery, Statement stmt, int Kontonummer)
    throws SQLException, ClassNotFoundException {
        sqlQuery = "INSERT INTO konto (KTO_NR) VALUES(Kontonummer)";
        stmt.executeQuery(sqlQuery);
    }
//  -----------------------------------------------------------------------
//  Inhalt der Kontotabelle ausgeben
//  ----------------------------------------------------------------------
    public void printKonto(String sqlQuery, Statement stmt, ResultSet rs)
    throws SQLException, ClassNotFoundException {
                 sqlQuery = "SELECT * FROM konto";
        rs = stmt.executeQuery(sqlQuery);
        System.out.println("\n == ALLE VORHANDENEN BUCHUNGEN === \n");
        int counter = 1;
        while(rs.next()){
            System.out.println(counter++ + ". Datensatz:\n");
            int id = rs.getInt("K_Id");
            System.out.print("\t [K_ID -->" + id + "]");
            int ktoNr = rs.getInt("KTO_NR");
            System.out.print("\t [KTO_NR -->" + ktoNr + "]\n\n");
        }
    }
//  -----------------------------------------------------------------------
//  Tabellen konto und buchungen anlegen
//  -----------------------------------------------------------------------
    
    public void createTables(String sqlQuery, Statement stmt)  
        throws SQLException, ClassNotFoundException{

        sqlQuery = "CREATE TABLE konto (K_ID INTEGER IDENTITY, KTO_NR INTEGER, PRIMARY KEY(K_ID));";
        stmt.executeUpdate(sqlQuery);
        sqlQuery = "CREATE TABLE buchungen(B_ID INTEGER IDENTITY, K_ID INTEGER, Betrag DOUBLE, Datum DATE, Gegenkonto INTEGER, PRIMARY KEY(B_ID), FOREIGN KEY(K_ID) REFERENCES konto(K_ID));";
        stmt.executeUpdate(sqlQuery);
    }
    
} // end of KontoDB
 
R

Roar

Gast
:?
vielleicht nochmal nachlesen wie man strings benutzt? :)
"ich hab " + 27 + " zentimeter"
 
R

Roar

Gast
xquadrat hat gesagt.:
???
Ich will dem Ding nicht den Namen Kontonummer zuweisen, sondern den Wert der int Variablen Kontonummer
ja, aber ersteres tust du mit deinem code:
sqlQuery = "INSERT INTO konto (KTO_NR) VALUES(Kontonummer)";
und letzteres mit meinem (mehr oder weniger :) )
 

bummerland

Top Contributor
Code:
sqlQuery = "INSERT INTO konto (KTO_NR) VALUES(" + Kontonummer + ")";
 

xquadrat

Mitglied
cool, danke, das hat schon mal geklappt,
jetzt habe ich ein weiteres problem, ich habe ja meine Klasse KontoDB,
jetzt habe ich eine weitere Klasse KontoZugriff von der aus ich die Funktionen der Klasse KontoDB aufrufen will.
er scheint die funktion auch aufzurufen, allerding wird das Statement wohl nie ausgeführt, denn wenn ich die zur Kontrolle die printKonto Funktion aufrufe, dann erscheint der Datensatz nicht.


Code:
package javadb;
import java.sql.*;

public class KontoZugriff extends KontoDB {
    public static void main(String[] args) throws SQLException, ClassNotFoundException{
        
        Class.forName("org.hsqldb.jdbcDriver");
        Connection con = DriverManager.getConnection(
                "jdbc:hsqldb:file:myDBs/userDB;shutdown=true","sa","");
                
        ResultSet rs = null;
        Statement stmt = con.createStatement();
        
        KontoDB kontoDB = new KontoDB();
        String sqlQuery = null;
        int year = 1980;
        int month = 8;
        int day = 21;
        Date Datum = new Date(year, month,day);
        
        double Betrag = 22.80;
        int Gegenkonto = 987654;
        int Kontonummer = 64332626;
        
        kontoDB.insertKonto(sqlQuery, stmt, Kontonummer);
        stmt.executeQuery(sqlQuery);
        kontoDB.printKonto(sqlQuery, stmt, rs);
    }

    public KontoZugriff() {
    }
    
}
 

xquadrat

Mitglied
Ich habe jetzt gefunden warum das nicht funktioniert, weil ja bei jedem Start von KontoZugriff eine neue instanz von KontoDB angelegt wird. Wie kann ich das umgehen?
 

Timmah

Bekanntes Mitglied
Du Verbindest dich einmal mit der DB. Dann steht die Connection. Das con.close(); packst du in eine extra Methode trenneVerbindung(); das Verbinden in aufbauenVerbindung();.

Dann machst du dir eine getConnection();, mit der du die Verbindung abfragen kannst.

Also allgemein die einzelnen Sachen etwas strukturieren, so dass du nicht immer "Verbindung aufbauen - Verbindung abbauen" machen musst (Beim INSERT nicht immer Verbindungen aufbauen,abbauen, sondern diese Methode einzeln machen).
Dann funktioniert das auch, und du brauchst du eine Instanz von deiner KontoDB.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I HSQLDB HSQLDB 2.5.0 - Wie Loggen abstellen? Datenbankprogrammierung 4
B HSQLDB - auto_increment als unexpected token ? Datenbankprogrammierung 1
E Abfrage auf HSQLDB Datenbankprogrammierung 4
windl MySQL und HSQLDB Datenbankprogrammierung 4
D HSQLDB HSQLDB in PHP-Projekt einbinden? Datenbankprogrammierung 7
I Inhalt einer hsqldb anzeigen Datenbankprogrammierung 1
G java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver Datenbankprogrammierung 4
M HSQLDB oder DERBY - warum SCRIPT Datei? Datenbankprogrammierung 0
T Hibernate, HSQLDB und UNIQUE Datenbankprogrammierung 2
F hsqldb Fehler - unknown source Datenbankprogrammierung 11
E HSQLDB Eclipse + Geronimo + HSQLDB = org.hsqldb.jdbcDriver in classloader Datenbankprogrammierung 5
M HSQLDB 2.0 - wie tmp-Verzeichnis löschen Datenbankprogrammierung 2
S HSQLDB DELETE-Statement funktioniert nicht Datenbankprogrammierung 4
M Bei HSQLDB etwas wie OPTIMIZE TABLE? Datenbankprogrammierung 2
F HSQLDB HSQLDB lässt mich nicht auf erstellte Tabelle zugreifen Datenbankprogrammierung 12
D datenbank (hsqldb) in runnable jar einbinden Datenbankprogrammierung 2
E Herangehensweise Neues Projekt mit Netbeans / HSQLDB / JPA Datenbankprogrammierung 3
T Hsqldb: java.lang.NoClassDefFoundError: org/hsqldb/Server Datenbankprogrammierung 2
F Kann keine Verbindung mit HSQLDB aufbauen Datenbankprogrammierung 2
S HSQLDB Kopiere Tabellen Datenbankprogrammierung 2
H hsqldb - Database must be shutdown Datenbankprogrammierung 10
O HSQLDB Verbindung schlägt fehl Datenbankprogrammierung 3
K Jpa hsqldb Datenbankprogrammierung 1
N Problem mit HSQLDB Datenbankprogrammierung 5
N Hsqldb und text tables source not found Datenbankprogrammierung 5
B HSQLDB Datenbank Manager Datenbankprogrammierung 19
R SELECT aus hsqldb mit Parameter Datenbankprogrammierung 2
R HSQLDB Datenbankprogrammierung 10
G hsqldb datenspeicherung Datenbankprogrammierung 2
D H2 DB oder doch HSQLDB ? Datenbankprogrammierung 2
A HSQLDB Performance bei erstem Zugriff Datenbankprogrammierung 6
G HSQLDB überprüfen, ob Tabelle bereits existiert Datenbankprogrammierung 3
@ HSQLDB: socket creation error Datenbankprogrammierung 6
G HSQLDB Files Datenbankprogrammierung 5
G maximale Einträge in HSQLDB Datenbankprogrammierung 7
A Datenspeicherung in hsqldb Datenbankprogrammierung 22
A Umgang mit hsqldb Datenbankprogrammierung 24
A Fehler in der HSQLDB Datenbankprogrammierung 6
A Problem mit der Anbindung zur hsqldb Datenbankprogrammierung 18
J HSQLDB ohne JDBC Datenbankprogrammierung 8
C Keine Verbindung zu HSQLDB möglich Datenbankprogrammierung 22
G Probleme mit Laden des JDBC-Treiber in HSQLDB Datenbankprogrammierung 2
G HSQLDB - kann mir jemand Packages erstellen? Datenbankprogrammierung 6
B HSQLDB und die log-Datei Datenbankprogrammierung 10
W HSQLDB Datenbankprogrammierung 6
G HSQLDB als Dateien anlegen Datenbankprogrammierung 5
S nullpointerexception bei HSQLDB Datenbankprogrammierung 4
L HSQLDB sichern (import und export von DB) Datenbankprogrammierung 3
D HSQLDB in JAR Datenbankprogrammierung 3
S hsqldb und ant Datenbankprogrammierung 3
S Hsqldb java.lang.NullPointerException Datenbankprogrammierung 2
D HSQLDB 2xPK + AutoInc Datenbankprogrammierung 22
M HSQLDB Server Problem Datenbankprogrammierung 2
T HSQLDB => diverses Datenbankprogrammierung 21
L persistentes Speichern von Daten in der HSQLDB ? Datenbankprogrammierung 5
A Weitere Fragen zu hsqldb Datenbankprogrammierung 6
A Text-Tabellen in HSQLDB Datenbankprogrammierung 9
A HSQLDB Datenbankprogrammierung 10
A Hsqldb ClassDefNotFound Datenbankprogrammierung 2
M Problem mit HSQLDB Datenbankprogrammierung 2
N Hibernate & hsqldb: Problem bei db-update Datenbankprogrammierung 7
G Problem mit der Startenzeit einer HSQLDB Datenbankprogrammierung 4
T HSQLDB, wie mache ich das mit hsqldb.cache_scale? Datenbankprogrammierung 13
E BufferedImage in hsqldb speichern Datenbankprogrammierung 5
B HSqlDb Datenbankprogrammierung 2
R hsqldb: performance, große tabellen und so Datenbankprogrammierung 10
P DERBY vs HSQLDB (Vor- Nachteile) Datenbankprogrammierung 3
EagleEye INSERT INTO Problem mit HSQLDB Datenbankprogrammierung 8
G Vector in hsqldb schreiben Datenbankprogrammierung 5
M Cast-Problem - HSQLDB Datenbankprogrammierung 3
C HSQLDB korrekter Shutdown Datenbankprogrammierung 2
C hsqldb Befehle in Java Datenbankprogrammierung 19
P HSQLDB Mehrbenutzerbetrieb Datenbankprogrammierung 7
D HSQLDB Datenbank Zugriff! Datenbankprogrammierung 4
H javaw bleibt bei hsqldb hängen Datenbankprogrammierung 12
D HSQLDB installieren ... Datenbankprogrammierung 8
D Daten aus der Firebase-Echtzeitdatenbank abfragen und in Variablen speichern (JAVA) Datenbankprogrammierung 0
C Oracle Bind Variablen (benannt) Datenbankprogrammierung 6
D MySQL Client - Server: Client verabschiedet sich sobald ich Variablen im SQL Statement verwende Datenbankprogrammierung 9
D MySQL Verständnisproblem mit globalen Variablen (Connection) Datenbankprogrammierung 7
S SQL inner join bei >10 Tabellen über 2 Variablen Datenbankprogrammierung 2
T Daten aus DB in variable Zahl an Variablen speichern Datenbankprogrammierung 18
G DB Modellierung mit variablen Attributen in der Tabelle Datenbankprogrammierung 4
L oracle:ORA-01008: Nicht allen Variablen ist ein Wert zugeord Datenbankprogrammierung 1
A java & mysql abfrage mit variablen auswerten, wie? Datenbankprogrammierung 8
G Syntax für Select - Abfrage mit Variablen Datenbankprogrammierung 39
H Variablen übergeben Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben