Hallo zusammen,
bin neu hier und das ist mein erster Post. Dazu wollte ich allen ein herzliches hallo sagen. Ich schätze mich eher als Java-Beginner ein.
Nun zu meinem Problem. Wir machen zurzeit an der Schule ein Projekt, das auch ein bisschen Dantenbankprogrammierung enthält.
Wir haben eine Methode geschrieben, um die email vom user zu bekommen, welcher sich gerade einloggt(Die email-adresse ist in einer Datenbank gespeichert). Das funktioniert soweit auch alles ganz gut. Jedoch wenn ich die email an eine andere Klasse weitergeben möchte, bekomme ich den Fehler "java.lang.IndexOutOfBoundsException: Index: 0, Size: 0".
Hier der Java-Code
In zeile 44 rufe ich die methode von der main-klasse mit String mail = application.getPersonData().get(0).getEmail(); und übergebe die variable mail der sql-query.
Nun möchte ich in der anderen Klasse die methode tabelleanzeigen mit der observablelist aufrufen, jedoch bekomme ich den oben genannten Fehler
Hier die controller Klasse:
Vielleicht findet ihr ja den Fehler, würde mir sehr helfen.
Vielen Dank schon mal in voraus
Gruß
nighty
bin neu hier und das ist mein erster Post. Dazu wollte ich allen ein herzliches hallo sagen. Ich schätze mich eher als Java-Beginner ein.
Nun zu meinem Problem. Wir machen zurzeit an der Schule ein Projekt, das auch ein bisschen Dantenbankprogrammierung enthält.
Wir haben eine Methode geschrieben, um die email vom user zu bekommen, welcher sich gerade einloggt(Die email-adresse ist in einer Datenbank gespeichert). Das funktioniert soweit auch alles ganz gut. Jedoch wenn ich die email an eine andere Klasse weitergeben möchte, bekomme ich den Fehler "java.lang.IndexOutOfBoundsException: Index: 0, Size: 0".
Hier der Java-Code
Java:
package Model;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.Dialogs;
import Application.DB_Connection;
import Application.Main;
import Controller.Beschwerden;
import Controller.Beschwerden_Admin_Controller;
import Controller.Login_Controller;
public class Beschwerden_Admin_Model {
private Main application = new Main();
Login_Controller control = new Login_Controller();
public void setApp(Main application) {
this.application = application;
}
// Methode für das Befüllen der Tabelle
public ObservableList<Beschwerden> tabelleAnzeigen(
ObservableList<Beschwerden> data) {
// OberservableArraylist erzeugen
data = FXCollections.observableArrayList();
try {
ResultSet rs;
PreparedStatement pst = null;
Connection conn = null;
conn = DB_Connection.getConnection();
String mail = application.getPersonData().get(0).getEmail();
// Sql statement für das Abrufen der Daten von der Datenbank
String sql = "select ms_id, from_User, ms_subject, datum, status from Beschwerde where to_user='"+mail+"' order by ms_id desc;";
// Sql-anweisung für das auslesen von ID, sender-email, betreff
// datum und status
//String sql = "select ms_id, from_User, ms_subject, datum, status from Beschwerde where to_user='Test@test.de' order by ms_id desc;";
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
java.sql.ResultSetMetaData md = rs.getMetaData();
// Anzahl spalten wird ermittelt
int columns = md.getColumnCount();
// Wenn etwas zurückgegeben wird, führe aus
while (rs.next()) {
String[] rows = new String[columns];
// Reihe wird vorbereitet
for (int i = 0; i < columns; i++) {
rows[i] = rs.getString(i + 1);
}
// Strings in observablelist eintragen
data.addAll(new Beschwerden(rows[0], rows[1], rows[2], rows[3],
rows[4]));
}
rs.close();
conn.close();
} catch (Exception e) {
// Catch-Block, falls fehler auftritt
Dialogs.showErrorDialog(null,
"Es ist ein Verbindungsfehler aufgetreten", "Error Dialog",
"Verbindungsfehler");
System.out.println(e);
}
// Obervablelist zurückgeben
return data;
}
In zeile 44 rufe ich die methode von der main-klasse mit String mail = application.getPersonData().get(0).getEmail(); und übergebe die variable mail der sql-query.
Nun möchte ich in der anderen Klasse die methode tabelleanzeigen mit der observablelist aufrufen, jedoch bekomme ich den oben genannten Fehler
Hier die controller Klasse:
Java:
package Controller;
import java.net.URL;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.ResourceBundle;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Dialogs;
import javafx.scene.control.Dialogs.DialogOptions;
import javafx.scene.control.Dialogs.DialogResponse;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.MouseEvent;
import Application.Main;
import Model.Beschwerden_Admin_Model;
public class Beschwerden_Admin_Controller implements Initializable {
@FXML
private TableView<Beschwerden> tbl_Beschwerden;
@FXML
private TableColumn<Beschwerden, String> c1;
@FXML
private TableColumn<Beschwerden, String> c2;
@FXML
private TableColumn<Beschwerden, String> c3;
@FXML
private TableColumn<Beschwerden, String> c4;
@FXML
private TableColumn<Beschwerden, String> c5;
@FXML
private TextArea txtArea_Nachricht;
@FXML
private TextArea txtArea_Antwort;
@FXML
private TextField txt_An;
@FXML
private TextField txt_Betreff;
@FXML
private Button btn_Löschen;
@FXML
private Button btn_Weiterleiten;
@FXML
private Button btn_Antwort;
@FXML
private ComboBox<Beschwerden> cb_Mitarbeiter;
private ObservableList<Beschwerden> data;
private ObservableList<Beschwerden> data_combobox;
private Main application;
// Erzeugen des Objekts der klasse Beschwerden_Admin_Model
Beschwerden_Admin_Model model = new Beschwerden_Admin_Model();
// Main Klasse
public void setApp(Main application) {
model.setApp(application);
this.application = application;
}
public void btn_back(ActionEvent event) {
application.gotoMain_Frame_Admin();
}
public void initialize(URL url, ResourceBundle rb) {
c1.setCellValueFactory(new PropertyValueFactory<Beschwerden, String>(
"MailID"));
c2.setCellValueFactory(new PropertyValueFactory<Beschwerden, String>(
"Email"));
c3.setCellValueFactory(new PropertyValueFactory<Beschwerden, String>(
"Betreff"));
c4.setCellValueFactory(new PropertyValueFactory<Beschwerden, String>(
"Datum"));
c5.setCellValueFactory(new PropertyValueFactory<Beschwerden, String>(
"Status"));
try {
// Daten werden in die tabelle Geladen, sobald auf Button beschwerde
// gedrückt wird
data = model.tabelleAnzeigen(data);
tbl_Beschwerden.setItems(data);
} catch (Exception e) {
e.printStackTrace();
}
try {
// Daten werden in die tabelle Geladen, sobald auf Button beschwerde
// gedrückt wird
data_combobox = model.fillComboBox(data_combobox);
cb_Mitarbeiter.setItems(data_combobox);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Vielleicht findet ihr ja den Fehler, würde mir sehr helfen.
Vielen Dank schon mal in voraus
Gruß
nighty