Datensätze v. SQL-Datenbank i. JTextFields ausgeben/updaten

Status
Nicht offen für weitere Antworten.
W

Whitesnake

Gast
Für euch Java-Freaks isses sicher kein Problem, aber für mich als Anfänger stellt es schon eines dar. Folgendes: Ich möchte fürs erste einmal Datensätze aus einer Datenbank auslesen und diese in JTextFields ausgeben. Ich kann zumindest schon auf die Datenbank zugreifen und so die Einträge einer Tabelle ausgeben. Leider schaffe ich es nicht zb. die Spalten Vorname/Nachname in zwei verschiedene JTextFields auszugeben. Ich möchte dann anschließend via vorwärts und rückwärts Button durch die IDs scrollen und dem ganzen Grenzen setzen, sprich wenn er bei ID 1 runtergeht er zum letzten vorhandenen Datensatz springt und umgekehrt. Und zu allem Überschuss sollte ich das ganze auch noch updaten können, sprich wenn ich in die JTextFields etwas eintrage und dann auf Update gehe, dass sich in der Datenbank ein neuer Eintrag erstellt mit den Daten.

So nach dieser langen Wurst: Weiß jemand wie das geht, oder kann mir jemand wertvolle Tipps geben? Vergesst nicht, ich bin ein absoluter Anfänger und kann außer die SQL Befehle (was nichts mit Java zu tun hat an sich) nicht wirklich viel in Java.
 

rastaman

Mitglied
hallo

Ja tipps kann ich dir schon geben... ;)

Damit das ganze funktioniert must du dir die Daten, die du von der Datenbank erhälst in eine "gute" Form zum weiterverarbeiten bringen...
Hier drängt sich sozusagen ein Vector, gefüllt mit Objekten auf.

Ich weiss jetzt nicht wie viel Java und oop du schon verstehst... aber ich erklärs einfach mal kurz...

Also du willst anscheinend etwas mit Personen machen... (wegen nachname, vorname...)

Dann brauchst du also eine Klasse Personen, um dann für jeden Datenbankeintrag ein Objekt Person zu erstellen.

könnte so Aussehen:

Code:
public class Person{

  private String name;
  private String vorname;
//private, damit man nicht von ausssen darauf zugreiffen kann

  public Person(String n, String v){
     this.name = n;
     this.vorname = v;
    }
//Das ist der Konstruktor. Jedesmal, wenn du eine Person erstellen willst must du Name und Vorname mitgeben.

      public String getName(){
         return name;
     }
//Das brauchst du, um vom Objekt Person den Namen zu bekommen
     
     public String getVorname(){
         return vorname;
     }
//Das brauchst du, um vom Objekt Person den Vornamen zu bekommen

}

So nun kannst du beginnen die SQL Daten abzurufen und ind den Vector zu packen:
Code:
//Verbindung herstellen

 Vector person = new Vector();
//Der Vector, in den du die Daten Speicherst
    String query = "SELECT Name, Vorname  FROM person ORDER BY Name";
     try {
           stmt = conn.createStatement();
           rSet = stmt.executeQuery( query );
            while ( rSet.next() )
//wenn eine nächste Zeile vorhanden ist, dann mach das mit ihr:
            person.add( new Person( rSet.getString("Name"), rSet.getString("Vorname"));
//person.add fügt dem Vector das Objekt bei, 
//mit new Person kreirst du ein neues Objekt und übergibst Name und Vorname
     }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage" + e );
    }
// Verbindung beenden

So nun haben wir die gewünschten Daten wunderbar in einem Vector, und die Datenbank wird nicht mehr belastet.

Also nun willst du das ganze mit den Textfields machen... das ist nun nicht mehr schwer... ;)

Code:
//das ganze gui...

//Dann brauchen wir eine Variable, in welcher wir speichern, welchen Kunden wir aktuell geöffnet haben...

   private int personenindex = 0;  //gleich bei null beginnen

//im action Listener des buttons "weiter" oder wie auch immer sollte nun so etwas stehen:

     if (personenindex >= (person.size() -1) ){
//personindex ist unser momentaner standort, fängt mit null an.
//person.size() gibt uns die grösse des Vectors Kunde an (also wieviele objekte sprich Kunden darin Sind)
//-1 müssen wir rechenen weill die grösse von 1 an gezält wird und der index von 0 an
//also wenn der index so gross ist wie die totalgrösse sind wir am ende der Daten und wollen vorne Anfangen.
         personenindex = 0;

     }
     else{
//Sonst zälnen wir dem index einfach eins dazu 
        personenindex = personenindex + 1;
     }
     beschriften(person,personenindex);
//nun rufen wir die Funktion beschriften auf, und geben ihr den Vector mit den Daten mit und den Index, 
//welchen dantensatz wir ansehen wollen.

//Das ganze kannst du dir ja auch noch umschreiben für einen Button zurück... ;)


public void beschriften(Vector p, int i){
//um diese Funktion aufzurufen müssen die Daten und der Index mitgeliefert werden.
        Person pers = (Person)p.get(i);
//Wir erstellen ein neues objekt Person mit name pers und holen dies aus dem Vector p an der Stelle i

Nun brauchen wir nur noch die Textfelder zu beschreiben.
        jTextfieldName.setText(k.getName());
        jTextfieldVorname.setText(k.getVorname());
}
//Jedesmal wenn also die Funktion beschriften aufgerufen wird füllt er die Textfelder mit den Namen.

Voila funktioniert alles tadellos nehme ich mal an ;) Also jetzt brauchen wir nur das Speichern des Datensatzes in die DB... Das ist ganz einfach!!!

Code:
//DB verbindung herstellen
      String query = "INSERT INTO `kunde` ( `Name` , `Vorname` ) 
                               VALUES ('"+jTextfieldName.getText+"', '"+jTextfieldVorname.getText+"');";

       stmt.executeUpdate( query );
//DB verbindung trennen

Damit du nun den neuen Kunden auch hast musst du halt den Vector personen wieder neu füllen...

Das ganze kannst du natrülich noch beliebig ausweiten und gescheit in Klassen packen, damit das dann auch schön oo wird... Aber ich denke fürs erste sollte dir das mal genügen... ;)[/code]
 
W

Whitesnake

Gast
Hallo! Vielen Dank für die umfassende Hilfe, ich werde das gleich morgen in der Früh probieren und wenn ich noch Fragen haben sollte, hättest du nocheinmal die Zeit mir zu helfen? Bin dir echt dankbar für deine vielen Kommentare in deiner Ausführung, das macht schon sehr viel leichter. Java ist an sich sehr interessant, aber durch das objektorientierte Programmieren etwas schwierig, da ich nicht wirklich vom Programmieren her komme.
 
W

Whitesnake

Gast
Code:
/*
 * Northwind.java
 *
 * Created on 07. Juli 2004, 18:41
 */

/**
 *
 * @author  Marek
 */
public class Northwind extends javax.swing.JFrame {
    
    /** Creates new form Northwind */
    public Northwind() {
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();
        jTextField3 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();

        getContentPane().setLayout(new java.awt.GridLayout(2, 3));

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jTextField1.setText("jTextField1");
        getContentPane().add(jTextField1);

        jTextField2.setText("jTextField2");
        getContentPane().add(jTextField2);

        jTextField3.setText("jTextField3");
        getContentPane().add(jTextField3);

        jButton1.setText("jButton1");
        getContentPane().add(jButton1);

        jButton2.setText("jButton2");
        getContentPane().add(jButton2);

        jButton3.setText("jButton3");
        getContentPane().add(jButton3);

        pack();
    }
    
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        new Northwind().show();
    }
    
    
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    // End of variables declaration
    
}
 

rastaman

Mitglied
Code:
/*
 * Sql.java
 *
 * Created on 7. Juli 2004, 20:21
 */

package northwind;

/**
 *
 * 
 */

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

public class Sql {
    
   private Connection conn;
   private Statement stmt;
   private ResultSet rSet;
   private int update;
   
  
  public boolean connect() {
//Verbindung zur DB aufbauen hier wird klar, dass diese funktion einen boolean zurück liefern muss
    try {
      Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
    }
    catch ( ClassNotFoundException e ) {
      System.out.println( "Fehler bei ODBC-JDBC-Bridge" + e );
      return false;
//Falls was mit dem Treiber nicht klappt geht er schon hier mit dem false zurück...
    }
    try
    {
      String url = "jdbc:odbc:Northwind";
      conn = DriverManager.getConnection( url, "mt", "mt" );
    }
    catch ( SQLException e )
    {
      System.out.println( "Fehler beim Connecten" + e );
      return false;
//Falls was mit der Verbindung nicht klappt geht er hier zurück...
    }
    return true;
//Falls alles glatt läuft kommt true zurück
  }
   
  public ResultSet abfrage(String query){
//Eine Abfrage machen hier kommt ein Result Set zurück
    try
    {
      stmt = conn.createStatement();
      rSet = stmt.executeQuery( query );

     }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage" + e );

    }
     return rSet;  //genau hier wirds zurück gegeben.
  }
  
    public boolean abfrageende(){
//Das Abfrage Ende ist separat, da es sonst konflickte mit dem Abfragen gibt
    try {
        stmt.close();
     }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage" + e );
      return false;
    }
     return true;  
  }
  
  
  public int update(String query){
//die Updatefunktion unterscheidet sich minim von der Abfragefunktion ;)
    try {
      stmt = conn.createStatement();
      update = stmt.executeUpdate( query );
//Bei der Update Funktion bekommen wir einen Integer zurück für die Anzahl betroffener Datensätze
      stmt.close();
     }
    catch ( SQLException e )  {
      System.out.println( "Fehler bei Tabellenabfrage" + e );
    }
     return update;  
//diesen könne wir später zum überprüfen noch gebrauchen.
  }
  
  public boolean trennen(){
//last but not least.. ;)
    try {
      conn.close();
    }
    catch ( SQLException e ) {
      System.out.println( "Fehler bei Tabellenabfrage" + e );
      return false;
    }
    return true;   
  }
 
}
 

rastaman

Mitglied
Code:
  if (personenindex <= 0 ){ 
         personenindex =person.size() -1;
     } 
     else{ 
        personenindex = personenindex - 1; 
     } 
     beschriften(person,personenindex);
 

rastaman

Mitglied
Code:
  if (personenindex >= (person.size() -1) ){ 
         personenindex = 0; 
     } 
     else{ 
        personenindex = personenindex + 1; 
     } 
     beschriften(person,personenindex);
 

rastaman

Mitglied
Code:
package northwind;

/* 
* Northwind.java 
* 
* Created on 07. Juli 2004, 18:41 
*/ 
import java.sql.*;
import java.util.*;
/** 
* 
* @author  Marek 
*/ 
public class Northwind extends javax.swing.JFrame { 
    
    public Vector personen;
     
    /** Creates new form Northwind */ 
    public Northwind() { 
        initComponents(); 
        vectorFüllen();
    } 
    
    /** This method is called from within the constructor to 
     * initialize the form. 
     * WARNING: Do NOT modify this code. The content of this method is 
     * always regenerated by the Form Editor. 
     */ 
    private void initComponents() { 
        jTextField1 = new javax.swing.JTextField(); 
        jTextField2 = new javax.swing.JTextField(); 
        jTextField3 = new javax.swing.JTextField(); 
        jButton1 = new javax.swing.JButton(); 
        jButton2 = new javax.swing.JButton(); 
        jButton3 = new javax.swing.JButton(); 

        getContentPane().setLayout(new java.awt.GridLayout(2, 3)); 

        addWindowListener(new java.awt.event.WindowAdapter() { 
            public void windowClosing(java.awt.event.WindowEvent evt) { 
                exitForm(evt); 
            } 
        }); 

        jTextField1.setText("jTextField1"); 
        getContentPane().add(jTextField1); 

        jTextField2.setText("jTextField2"); 
        getContentPane().add(jTextField2); 

        jTextField3.setText("jTextField3"); 
        getContentPane().add(jTextField3); 

        jButton1.setText("jButton1"); 
        getContentPane().add(jButton1); 

        jButton2.setText("jButton2"); 
        getContentPane().add(jButton2); 

        jButton3.setText("jButton3"); 
        getContentPane().add(jButton3); 

        pack(); 
    } 
    
    /** Exit the Application */ 
    private void exitForm(java.awt.event.WindowEvent evt) { 
        System.exit(0); 
    } 
    
    /** 
     * @param args the command line arguments 
     */ 
    public static void main(String args[]) { 
        new Northwind().show(); 
           
    } 
    
    public void vectorFüllen(){
        Sql sql = new Sql();
        sql.connect();
        String query = "Hier kommt dein Query";
        try {
            ResultSet rSet = sql.abfrage(query);
       while ( rSet.next() )
            personen.add( new Person( rSet.getString("Name"), rSet.getString("Vorname") ));
        }
     catch ( SQLException e ){
        System.out.println( "Fehler bei Tabellenabfrage" + e );
        }
        sql.abfrageende();
        sql.trennen();
        beschriften(personen, 0);
    }
    
    
    public void beschriften(Vector p, int i){ 
       Person pers = (Person)p.get(i); 
        jTextField1.setText(pers.getName()); 
        jTextField2.setText(pers.getVorname()); 
}
    
    
    // Variables declaration - do not modify 
    private javax.swing.JButton jButton1; 
    private javax.swing.JButton jButton2; 
    private javax.swing.JButton jButton3; 
    private javax.swing.JTextField jTextField1; 
    private javax.swing.JTextField jTextField2; 
    private javax.swing.JTextField jTextField3; 
    // End of variables declaration 
    
}
 

rastaman

Mitglied
jetzt fehlt noch das update...

den folgenden code knallst du dann in den actionlistener des update:

Code:
/DB verbindung herstellen 
      String query = "INSERT INTO `kunde` ( `Name` , `Vorname` ) 
                               VALUES ('"+jTextfieldName.getText+"', '"+jTextfieldVorname.getText+"');"; 

       stmt.executeUpdate( query ); 
//DB verbindung trennen
//und dann noch folgendes: 
     personen.add( new Person( jTextfieldName.getText, TextfieldVorname.getText));

So das wars... sollte laufen und ist auch ausbaufähig... ;)[/code]
 

rastaman

Mitglied
OK du hast glück... ;) Ich fahre erst in der früh in die ferien... ;)


also hier der code für die Klasse Sql:
Code:
package videothek2;

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

public class Sql {
    
   private Connection conn;
   private Statement stmt;
   private ResultSet rSet;
   private int update;

    
  public boolean connect()
  {
    try {
      Class.forName( "com.mysql.jdbc.Driver" );
    }
    catch ( ClassNotFoundException e ) {
      System.out.println( "Fehler bei ODBC-JDBC-Bridge" + e );
      return false;
    }
    try
    {
      String url = "jdbc:mysql://localhost/videothek";
      conn = DriverManager.getConnection( url, "root", "224181" );
      //conn.close();
    }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage" + e );
      return false;
    }
    return true;
  }
   
  public ResultSet abfrage(String query){
    try
    {
      stmt = conn.createStatement();
      String sqlQuery = query;
      rSet = stmt.executeQuery( sqlQuery );

     }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage" + e );

    }
     return rSet;  
  }
  
    public boolean abfrageende(){
    try
    {
        stmt.close();
     }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage" + e );
      return false;
    }
     return true;  
  }
  
  
  public int update(String query){
    try
    {
      stmt = conn.createStatement();
      String sqlUpdate = query;
      update = stmt.executeUpdate( sqlUpdate );
      stmt.close();
     }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage" + e );
    }
     return update;  
  }
  
  public boolean trennen(){
    try
    {
      conn.close();
    }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage" + e );
      return false;
    }
    return true;   
  }
 
}

und hier die Klasse gui
Code:
/*
 * gui.java
 *
 * Created on 8. Juli 2004, 22:09
 */

package northwind;

/*
 * Northwind.java
 *
 * Created on 07. Juli 2004, 18:41
 */
import java.sql.*;
import java.util.*;

/**
 *
 * @author  Marek
 */

public class gui extends javax.swing.JFrame {
    
    public Vector person;
    public int personenindex;
    private Statement stmt;
    private int anzahl;
    
    /** Creates new form gui */
    public gui() {
        initComponents();
        vectorFüllen();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {//GEN-BEGIN:initComponents
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();
        jTextField3 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();

        getContentPane().setLayout(new java.awt.GridLayout(2, 3));

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jTextField1.setText("jTextField1");
        getContentPane().add(jTextField1);

        jTextField2.setText("jTextField2");
        getContentPane().add(jTextField2);

        jTextField3.setText("jTextField3");
        getContentPane().add(jTextField3);

        jButton1.setText("<<");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton1);

        jButton2.setText(">>");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton2);

        jButton3.setText("Update");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton3);

        pack();
    }//GEN-END:initComponents
    
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
        Sql sql = new Sql();
        sql.connect();
        String query = "INSERT INTO `Employees` ( `LastName` , `FirstName` ) VALUES ('"+jTextField1.getText()+"', '"+jTextField2.getText()+"');";
        if(sql.update(query)==1){
        sql.trennen();
        beschriften(person, 0);
        person.add( new Person( jTextField1.getText(), jTextField1.getText()));
        }
        else{
            System.out.println( "Fehler beim Speichern des Datensatz in die DB");
        }
    }//GEN-LAST:event_jButton3ActionPerformed
    
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        if (personenindex >= (person.size() -1) ){
            personenindex = 0;
        }
        else{
            personenindex = personenindex + 1;
        }
        beschriften(person, personenindex);
    }//GEN-LAST:event_jButton2ActionPerformed
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        if (personenindex <= 0 ){
            personenindex = person.size() -1;
        }
        else{
            personenindex = personenindex - 1;
        }
        beschriften(person,personenindex);
    }//GEN-LAST:event_jButton1ActionPerformed
    
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
        System.exit(0);
    }//GEN-LAST:event_exitForm
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        new gui().show();
    }
    
    public void vectorFüllen(){
        Sql sql = new Sql();
        sql.connect();
        String query = "SELECT * LastName, FirstName FROM Employees";
        try {
            ResultSet rSet = sql.abfrage(query);
            while ( rSet.next() )
                person.add( new Person( rSet.getString("name"), rSet.getString("vorname") ));
        }
        catch ( SQLException e ){
            System.out.println( "Fehler bei Tabellenabfrage" + e );
        }
        sql.abfrageende();
        sql.trennen();
        beschriften(person, 0);
    }
    
    public void beschriften(Vector p, int i){
        Person pers = (Person)p.get(i);
        jTextField1.setText(pers.getName());
        jTextField2.setText(pers.getVorname());
    }
    
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    // End of variables declaration//GEN-END:variables
    
}

und die klasse person hast du ja....

war eigentlich nichts grosses... ein par gross und kleinschreibefehler... flüchtigkeits fehler (z.B. textfeldName.getText() wobei das textfeld so hiess: jTextfield1....) na ja schaus dir genau an...

Hab ausserdem noch ne abfrage zur kontrolle für das update gemacht...
in diesem Stil könntest du jetzt auch die ganzen verbindungen kontrollieren... ;)

Also viel erfolg mit deinem Projekt. Gute Zeit... cu.
 
W

Whitesnake

Gast
Code:
/*
 * gui.java
 *
 * Created on 07. Juli 2004, 18:41
 */
import java.sql.*;
import java.util.*;

/**
 *
 * @author  Marek
 */

public class gui extends javax.swing.JFrame {
    
    public Vector personen;
    
    public Vector person;
    public int personenindex;
    private Statement stmt;
    private int anzahl;    
    
    /** Creates new form gui */
    public gui() {
        initComponents();
        vectorFüllen();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();
        jTextField3 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();

        getContentPane().setLayout(new java.awt.GridLayout(2, 3));

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jTextField1.setText("jTextField1");
        getContentPane().add(jTextField1);

        jTextField2.setText("jTextField2");
        getContentPane().add(jTextField2);

        jTextField3.setText("jTextField3");
        getContentPane().add(jTextField3);

        jButton1.setText("<<");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton1);

        jButton2.setText(">>");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton2);

        jButton3.setText("Update");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton3);

        pack();
    }
    
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
        Sql sql = new Sql();
        sql.connect();
        String query = "INSERT INTO `Employees` ( `LastName` , `FirstName` )" + 
        "VALUES ('"+jTextField1.getText()+"', '"+jTextField2.getText()+"');";
        if(sql.update(query)==1){
        sql.trennen();
        beschriften(person, 0);
        person.add( new Person( jTextField1.getText(), jTextField1.getText()));
        }
        else{
            System.out.println( "Fehler beim Speichern des Datensatz in die DB");
        }
    }
    
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        if (personenindex >= (person.size() -1) ){
            personenindex = 0;
        }
        else{
            personenindex = personenindex + 1;
        }
        beschriften(person,personenindex);
    }
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        if (personenindex <= 0 ){
            personenindex = person.size() -1;
        }
        else{
            personenindex = personenindex - 1;
        }
        beschriften(person,personenindex);
    }
    
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        new gui().show();
    }
    
    public void vectorFüllen(){
        Sql sql = new Sql();
        sql.connect();
        String query = "SELECT * LastName, FirstName FROM Employees";
        try {
            ResultSet rSet = sql.abfrage(query);
            while ( rSet.next() )
                person.add( new Person( rSet.getString("name"), rSet.getString("vorname") ));
        }
        catch ( SQLException e ){
            System.out.println( "Fehler bei Tabellenabfrage" + e );
        }
        sql.abfrageende();
        sql.trennen();
        beschriften(person, 0);
    }
    
    public void beschriften(Vector p, int i){
        Person pers = (Person)p.get(i);
        jTextField1.setText(pers.getName());
        jTextField2.setText(pers.getVorname());
    }
    
    
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    // End of variables declaration
    
}

Fehlermeldungen:

gui.java [97:1] cannot resolve symbol
symbol : class Person
location: class gui
person.add(new Person( jTextField1.getText(), jTextField1.getText()));
^
gui.java [143:1] cannot resolve symbol
symbol : class Person
location: class gui
person.add( new Person( rSet.getString("name"), rSet.getString("vorname") ));
^
gui.java [154:1] cannot resolve symbol
symbol : class Person
location: class gui
Person pers = (Person)p.get(i);
^
gui.java [154:1] cannot resolve symbol
symbol : class Person
location: class gui
Person pers = (Person)p.get(i);
^
4 errors
Errors compiling gui.
 
W

Whitesnake

Gast
Genau das wars, nur jetzt schreit er schon wieder. Es findet beim kompelieren zwar keinen syntaktischen Fehler, allerdings meint er folgendes:

java.lang.NullPointerException
at gui.vectorFüllen(gui.java:143)
at gui.<init>(gui.java:26)
at gui.main(gui.java:133)



 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
nonickatall MySQL Auf neue Datensätze in einer Datenbank reagieren Datenbankprogrammierung 5
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
B Aktuellen Stand der Datensätze einer Datenbank anzeigen Datenbankprogrammierung 9
J Datensätze aus der Datenbank holen Datenbankprogrammierung 3
M Datensätze in DataGrip (IntelliJ) Datenbankprogrammierung 1
J Java fügt Datensätze ein aber diese werden nicht richtig abgefragt Datenbankprogrammierung 3
R MySQL Datensätze in Textdokument Datenbankprogrammierung 7
R Große Datensätze, kleine Rechte Datenbankprogrammierung 8
J wie mit resultset.next() über Datensätze iterieren? Datenbankprogrammierung 15
T MySQL MySQL - Insert into fügt zwei identische Datensätze ein Datenbankprogrammierung 2
B Nur 99% der Datensätze werden in Tabelle geschrieben Datenbankprogrammierung 2
E primaryKey auslesen - Datensätze abgleichen Datenbankprogrammierung 4
S Häufig vorkommende Datensätze Datenbankprogrammierung 4
Kandum MySQL Anzahl gefundener Datensätze bleibt gleich, auch wenn mehr existieren und ausgegeben werden Datenbankprogrammierung 3
P Mit Hibernate mehrere Datensätze löschen Datenbankprogrammierung 7
J Datensätze löschen Datenbankprogrammierung 6
O Löschen vieler Datensätze mit Hibernate Datenbankprogrammierung 11
C Hibernate Datensätze finden Datenbankprogrammierung 17
F [SQLite] Mehrere Datensätze einfügen Datenbankprogrammierung 12
S Anzahl Datensätze in db4o Datenbankprogrammierung 2
D Können nur angesehende Datensätze geloggt werden? Datenbankprogrammierung 4
F NUR 3 datensätze auslesen Datenbankprogrammierung 6
F MySQL Nur die Datensätze zurückgeben, in denen ein anderer Preis steht Datenbankprogrammierung 9
J SQL-Abfrage zur löschung doppelter Datensätze Datenbankprogrammierung 7
J Ausgewählte Datensätze in DB-Tabelle schreiben Datenbankprogrammierung 13
S MySQl - Neue Datensätze "on the Fly" verarbeiten Datenbankprogrammierung 8
M Keine doppelten Datensätze einfügen Datenbankprogrammierung 24
N Oracle DB liefert nicht alle Datensätze Datenbankprogrammierung 3
C Doppelte Datensätze Datenbankprogrammierung 11
T Datensätze effektiv einlesen Datenbankprogrammierung 4
ARadauer viele datensätze. Datenbankprogrammierung 3
I Anzahl unterschiedlicher Datensätze ausgeben Datenbankprogrammierung 2
D mehrere Datensätze in ein Listenfeld Datenbankprogrammierung 2
S 50.000 updates auf 50.000 Datensätze Datenbankprogrammierung 3
A SELECT-Anweisung liefert keine Datensätze zurück Datenbankprogrammierung 9
M Datensätze zählen. Datenbankprogrammierung 6
E SQL-Frage (Löschen aller Datensätze) Datenbankprogrammierung 9
M JDBC: Viele Datensätze in Tabelle einfügen: Wie? Datenbankprogrammierung 7
C Datensätze variabel hinzufügen Datenbankprogrammierung 4
K Ältere Datensätze archivieren Datenbankprogrammierung 4
C Datensätze in einer JComboBox auflisten Datenbankprogrammierung 2
V Anzahl der Datensätze abfragen Datenbankprogrammierung 9
D Anzahl der zurückgelieferten Datensätze Datenbankprogrammierung 2
Baerdoc Empfehlungen zur Auswahl Datenbank Datenbankprogrammierung 6
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
M Meine Datenbank lässt sich mit meiner Methode nicht ändern Datenbankprogrammierung 1
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
MongoDB-Datenbank in Androidstudio einbinden Datenbankprogrammierung 1
thor_norsk Datenbank: Apache Derby Datenbankprogrammierung 6
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
M Datenbank mit REST API Datenbankprogrammierung 66
M Entfernte Datenbank Datenbankprogrammierung 11
T Datenbank: Tabelle erstellen bei Web-Applikation Datenbankprogrammierung 4
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
M MySQL Datenbank in Array Datenbankprogrammierung 2
S Den letzten Eintrag aus Datenbank ziehen (Oracle SQL Dev.) Datenbankprogrammierung 14
N Datenbank abfragen nach bestimmten Wort Datenbankprogrammierung 7
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
ma095 value NULL- Datenbank Postgresql Spring - intellij community Datenbankprogrammierung 0
raptorrs Plötzlich keine Verbindung zur Datenbank mehr möglich Datenbankprogrammierung 14
Davee SQLite SQLite Datenbank lässt sich nicht auf anderen PCs öffnen Datenbankprogrammierung 8
P Datenbank Tool - besser als oracle SQL Developer gesucht mit effizinte Verbindungsverwaltung Datenbankprogrammierung 2
X JPA (EclipseLink) und Oracle Datenbank Datenbankprogrammierung 2
T Datenbank auf einer Webseite aus einer Exceltabelle erstellen Datenbankprogrammierung 5
L SQL Datenbank Datenbankprogrammierung 7
L SQL Datenbank INSERT INTO Datenbankprogrammierung 6
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
L SQL Datenbank Tabelle erstellen Datenbankprogrammierung 6
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
anton1 Online Datenbank Datenbankprogrammierung 7
krgewb H2-Datenbank öffnen Datenbankprogrammierung 8
J Datenbank abfragen Datenbankprogrammierung 6
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
O SQL Abfragen mit Mini Datenbank Datenbankprogrammierung 12
Z Datenbank Choicebox wird nicht befüllt Datenbankprogrammierung 15
S Suche In SQL Datenbank mit array Datenbankprogrammierung 6
P Enum in der Datenbank Datenbankprogrammierung 1
Z SQL- Datenbank 1.PK zu 2.FK Datenbankprogrammierung 3
E netbeans - jsp Daten in Datenbank hinzufügen Datenbankprogrammierung 2
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
Avalon Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen Datenbankprogrammierung 10
MiMa wo Datenbank verbinden/trennen? Datenbankprogrammierung 1
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
DeltaPilot12 Datenbank connect Funktion Datenbankprogrammierung 7
J Oracle Datenbank-Tabelle per Combobox (oder ähnliches) auswählen Datenbankprogrammierung 3
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
J JAR-Datei und Datenbank Datenbankprogrammierung 8
Bluedaishi Datenbank Abfrage Datenbankprogrammierung 36
Kirby.exe Zeile aus der Datenbank holen wenn ein match besteht Datenbankprogrammierung 7
Kirby.exe Es werden keine Einträge in der Datenbank gemacht Datenbankprogrammierung 23
C Datenbank anlegen und über eine Website mit Daten füllen? Datenbankprogrammierung 25
J Welche Kriterien haben Einfluss auf die Geschwindigkeit einer Datenbank ? Datenbankprogrammierung 4
B Frage zu Datenbank Design bei Events (ZenDesk) Datenbankprogrammierung 1
M SQLite Datenbank mit SQLite Datenbankprogrammierung 7
C String in Datenbank einfügen Datenbankprogrammierung 11
C Keinen Zugrift auf Datenbank Datenbankprogrammierung 2
C Datenbank zugreifen Datenbankprogrammierung 10

Ähnliche Java Themen


Oben