Derby/JavaDB Problem mit Befüllung von Tabelle

ionhack

Mitglied
Also...
folgender Quelltext:
Java:
package jlager;
import java.sql.*;
import java.io.File;
         
public final class datab {

    public String dbname = "dblager";
    public int Anz_kunden;
    public Connection conn;

public datab(){
       
      try{
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();    
      if(new File(dbname).exists()) {
        conn = DriverManager.getConnection("jdbc:derby:" + dbname);
      } else {
        conn = DriverManager.getConnection("jdbc:derby:" + dbname + ";create=true");
        dberstellen();
      }

    } catch(Exception e) {
      System.out.println(e.getMessage());
         
    }
  }

    public void dberstellen() throws SQLException{
        conn.createStatement().execute("CREATE TABLE Kunde"
                + "("
                + "kundenid int(2),"
                + "kunde varchar(20),"
                + "anschrift varchar(50),"
                + "wohnort varchar(10)"
                + ")");
        conn.createStatement().execute("CREATE TABLE Lager "
                + "("
                + "kundenid int(2),"
                + "auftrag int(5),"
                + "artikel varchar(8),"
                + "gewicht int(5)"
                + ")");
    }
    
    public void kundeeintragen(String kunde, String anschrift, String wohnort){
         Anz_kunden++;
         try {
             conn.createStatement().execute("INSERT INTO Kunde"
                    + "( kundenid, kunde, anschrift, wohnort)"
                    + "VALUES"
                    + "( '"+Anz_kunden+"', '"+kunde+"', '"+anschrift+"', '"+wohnort+"')");

         }catch (Exception e){System.out.println(e.getMessage());}
    }
}

Wenn ich also nun von einer anderen Klasse die Methode kundeeintragen aufrufe, erscheint bei mir auf der Konsole folgende Meldung:

Die Tabelle/Ansicht 'KUNDE' ist nicht vorhanden.

Wer weiß Rat?
Danke schon im Vorraus.
MFG
 
und wie kann ich damit in die DB schauen? Bin nicht sher fortgeschritten in Sachen Datenbankprogrammierung. Hast du vllcht. ein Tutorial, oder kannst mir sagen was genau ich mit Squirrel öffnen muss.
MFG
 
Hallo ionhack,

zu Deinem Code: Bei Statements, die etwas an oder in der Datenbank verändern sollen, nutzt man nicht execute(..) sondern besser executeUpdate(..). Änder das in Deinen Methoden dberstellen() und kundeeintragen(..)
und wie kann ich damit in die DB schauen?
Wenn Du den Squirrel gestartet hast, kannst Du neue über "new Alias" die Parameter einstellen, mit denen sich Squirrel auf die Datenbank verbinden soll. Evtl. musst Du vorher über "Drivers" noch bekannt machen, wo das jar mit dem jdbc-Treiber liegt. Für die jdbc-Url verwendest Du die gleichen Einstellungen wie in Deinem Programm. Da das ganze Embedded ist, würe ich jedoch sicherstellen, dass Squirrel und Dein Programm nicht gleichzeitig laufen, wiel die sonst auf die selben Files zugreifen würden und da weiß ich nicht, ob das unterstützt ist.

Gruß nillehammer
 
Eine kurze Einführung in Sqirrel:

Start von Squirrel mit squirrel-sql.bat
Den "Apache Derby Embedded" Driver modifizieren und unter "Extra Class Path" den JDBC-Treiber derby.jar hinzufügen.
Dann einen neuen Alias Eintrag anlegen mit dem Pfad zu Deiner Datenbank.
Dann zu dieser Datenbank verbinden und Tabellen anschauen.

PS: man baut sich nicht Strings zusammen und sendet diese an die DB. Hierfür wurde das java.sql.PreparedStatement erfunden!
 
Zuletzt bearbeitet:
Danke an alle... Habe nun in meine DB geschaut, tja es existierte tatsächlich keine Tabelle Kunde... habe sie nun erstellt und alles funtkioniert wunderbar.
MFG

Edit: Danke für den Tipp nillehammer... werde ich befolgen.
 

Neue Themen


Zurück
Oben