Java vizsga feladat

Ez a téma lezárásra került a moderátor által. A lezárás oka: Témacím… témacím… témacím…
Java vizsga feladat
2022-04-15T23:59:00+02:00
2022-04-15T23:59:07+02:00
2022-10-15T21:21:33+02:00
AdamJosef
Java-Fx programom grafikus alkalmazás résszel local host adatbázis feltöltésére illetve sosrok törlésére nem működik.
Mi lehet a hiba?:
1. Adatbázis kapcsolódás: adatbázis: "cegadatok", tábla: "alkalmazottak"

package com.example.cegadatokfx;

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


public class CegadatDb {
Connection conn;

public CegadatDb() throws SQLException, ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/cegadatok", "root", "");
}

public ArrayList<CegadatRekord> ListaFeltolt() throws SQLException {
ArrayList<CegadatRekord> lista = new ArrayList<>();
Statement stmt = conn.createStatement();
String sql = "SELECT * FROM alkalmazottak;";
ResultSet result = stmt.executeQuery(sql);
while (result.next()) {
int az = result.getInt("az");
String nev = result.getString("nev");
int nem = result.getInt("nem");
Date szuldatum = result.getDate("szuldatum");
String varos = result.getString("varos");
String cim = result.getString("cim");
String telefon = result.getString("telefon");
int kereset = result.getInt("kereset");

CegadatRekord elem = new CegadatRekord(az, nev, nem, szuldatum, varos, cim, telefon, kereset);
lista.add(elem);
}
return lista;
}
public int rekordHozzaadasa(CegadatRekord pr) throws SQLException {
String sql = "INSERT INTO alkalmazottak(nev, nem, szuldatum, varos, cim, telefon, kereset) VALUES (?,?,?,?,?,?,?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, pr.getNev());
stmt.setInt(2, pr.getNem());
stmt.setDate(3, pr.getSzuldatum());
stmt.setString(4, pr.getVaros());
stmt.setString(5, pr.getCim());
stmt.setString(6, pr.getTelefon());
stmt.setInt(7, pr.getKereset());

return stmt.executeUpdate();
}
public boolean rekordTorlese(int az) throws SQLException { //Update ugyan ez
String sql = "DELETE FROM alkalmazottak WHERE az = ?";
//System.out.println(sql);
//System.out.println(az);
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, az);
int erintettSorok = stmt.executeUpdate();
return erintettSorok == 1;
}
}


public class CegadatRekord {
private int az;
private String nev;
private int nem;
private Date szuldatum;
private String varos;
private String cim;
private String telefon;
private int kereset;

//2. Osztály Rekordok:

public CegadatRekord(int az, String nev, int nem, Date szuldatum, String varos, String cim, String telefon, int kereset) {
this.az = az;
this.nev = nev;
this.nem = nem;
this.szuldatum =szuldatum;
this.varos = varos;
this.cim = cim;
this.telefon = telefon;
this.kereset = kereset;
}
@Override
public String toString() {
return "CegadatRekord{" +
"az=" + az +
", nev='" + nev + ''' +
", nem='" + nem + ''' +
", szuldatum=" + szuldatum +''' +
", varos=" + varos +''' +
", cim='" + cim+ ''' +
", telefon='" + telefon+ ''' +
", kereset='" + kereset+ ''' +
'}';
}

public int getAz() {
return az;
}

public String getNev() {
return nev;
}

public int getNem() {
return nem;
}

public Date getSzuldatum() {
return szuldatum;
}

public String getVaros() {
return varos;
}

public String getCim() {
return cim;
}

public String getTelefon() {
return telefon;
}

public int getKereset() {
return kereset;
}

}


controller:

public class HelloController {
// db adattag kreálása:
CegadatDb db;
//@FXML létrhozása .fxml fileból: jobb klikk: update Controller, előtte fxml mentése, hozzáadjuk <> és <mit tartalmaz> <CegadatRekord, String>
@FXML
private Label welcomeText;
@FXML
private TableView <CegadatRekord>tablazatId;
@FXML
private TableColumn<CegadatRekord, Date> szuldatum;
@FXML
private TableColumn <CegadatRekord, String> cim;
@FXML
private TableColumn <CegadatRekord, String> telefon;
@FXML
private TableColumn <CegadatRekord, Integer>nem;
@FXML
private TableColumn <CegadatRekord, String> varos;
@FXML
private TableColumn <CegadatRekord, Integer> az;
@FXML
private TableColumn <CegadatRekord, String>nev;
@FXML
private TableColumn <CegadatRekord, Integer>kereset;

@FXML
protected void onHelloButtonClick() {
welcomeText.setText("Welcome to JavaFX Application!");
}
// initialize metódus meghívása: hogy mi törtrénjen az adattag névvel, a kapott osztályból a getId metódust minden oszlopra
//legyen getId metódus a CegadatRekord osztályban
public void initialize(){
az.setCellValueFactory(new PropertyValueFactory<>("az"));
nev.setCellValueFactory(new PropertyValueFactory<>("nev"));
nem.setCellValueFactory(new PropertyValueFactory<>("nem"));
szuldatum.setCellValueFactory(new PropertyValueFactory<>("szuldatum"));
varos.setCellValueFactory(new PropertyValueFactory<>("varos"));
cim.setCellValueFactory(new PropertyValueFactory<>("cim"));
telefon.setCellValueFactory(new PropertyValueFactory<>("telefon"));
kereset.setCellValueFactory(new PropertyValueFactory<>("kereset"));

//beolvasás adatbázisba: új példány adatbázis létrehozásra + adattagot is kreálok: CegadatDb db;
//adatbázisból lista létrehozása, metódusa: tablazatFeltolt() + try, catch

try {
db = new CegadatDb();
tablazatFeltolt();

}catch (Exception e){System.out.println(e);}
}
//tablazatFeltolt() metódus megírása: ArrayList létrehozása és feltöltése, előtte azonban kitöröljük a korábbi tartalmat
public void tablazatFeltolt(){

try {
ArrayList<CegadatRekord> lista = db.ListaFeltolt();
tablazatId.getItems().clear();
for (CegadatRekord elem:lista
) {
tablazatId.getItems().add(elem);
}

}catch (Exception e){System.out.println(e);}
}
//mysql-connector.jar legyen bemásolva + jobb click add as library

@FXML
public void onTorlesButtonClick(ActionEvent actionEvent) {
int selectedIndex = tablazatId.getSelectionModel().getSelectedIndex();
if (selectedIndex == -1){
System.out.println("A törléshez előbb válasszon ki egy elemet a táblázatból");
uzenetKiir("A törléshez előbb válasszon ki egy elemet a táblázatból");
return;
}
CegadatRekord torlendo = tablazatId.getSelectionModel().getSelectedItem();
if (!megerositesKiir("Biztos hogy törölni szeretné az alábbi rekordot: "+torlendo.getNev())){
return;
}
try {
db.rekordTorlese(torlendo.getAz());
System.out.println("Sikeres törlés");
uzenetKiir("Sikeres törlés");
tablazatFeltolt();
} catch (SQLException e) {
hibaKiir(e, "Hiba a törlés közben");
}
}

private void hibaKiir(Exception e, String hibauzenet) {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Hiba");
alert.setHeaderText(hibauzenet);
//alert.show();
alert.setContentText(e.getClass().toString());
Timer alertTimer = new Timer();
alertTimer.schedule(new TimerTask() {
@Override
public void run() {
Platform.runLater(() -> alert.show());
}
}, 500);
}

private void uzenetKiir(String uzenet) {
Alert alert = new Alert(Alert.AlertType.NONE);
alert.setContentText(uzenet);
alert.getButtonTypes().add(ButtonType.OK);
alert.show();
}

private boolean megerositesKiir(String uzenet){
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Biztos?");
alert.setHeaderText(uzenet);
Optional<ButtonType> result = alert.showAndWait();
return result.get() == ButtonType.OK;
}
}
Mutasd a teljes hozzászólást!

Ez a téma lezárásra került a moderátor által. A lezárás oka: Témacím… témacím… témacím…
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd