#33 nukuttu ja menty eteenpäin, mutta ei toimi. haeString palauttaa pyydetyn asiakkaan nimen?

This commit is contained in:
2026-06-03 21:51:38 +03:00
parent ede75c8692
commit bc92197541
+62 -99
View File
@@ -1,6 +1,7 @@
package fi.lpam.dataluokat;
import fi.lpam.gui.virheDialogit.SiirtoVirhe;
import javafx.scene.control.Alert;
import java.sql.*;
import java.time.DayOfWeek;
@@ -29,7 +30,6 @@ public class Asiakas implements TietokantaOlio {
}
/**
* Vain MultiColumnListViewin käyttöön
* @param nimi Asiakkaan nimi
*/
public Asiakas(String nimi) {
@@ -40,65 +40,9 @@ public class Asiakas implements TietokantaOlio {
* Kun luetaan asiakas tietokannasta
*/
private Asiakas(int id,
String nimi,
String osoite,
int maanantaiKpl,
int tiistaiKpl,
int keskiviikkoKpl,
int torstaiKpl,
int perjantaiKpl,
int salaatit,
int pääruoat,
int jälkiruoat,
String erityisruokavalio,
String avainTieto,
String lisätiedot,
String laskutusOsoite,
String yhteyshenkilönNimi,
String yhteyshenkilönPuhelinnumero,
String yhteyshenkilönSähköposti,
int lauantaiKpl,
int sunnuntaiKpl,
int dinnerMaanantaiKpl,
int dinnerTiistaiKpl,
int dinnerKeskiviikkoKpl,
int dinnerTorstaiKpl,
int dinnerPerjantaiKpl,
int dinnerLauantaiKpl,
int dinnerSunnuntaiKpl,
int dinnerSalaatit,
int dinnerPääruoat,
int dinnerJälkiruoat) {
String nimi) {
this.id = id;
this.nimi = nimi;
this.osoite = osoite;
this.maanantaiKpl = maanantaiKpl;
this.tiistaiKpl = tiistaiKpl;
this.keskiviikkoKpl = keskiviikkoKpl;
this.torstaiKpl = torstaiKpl;
this.perjantaiKpl = perjantaiKpl;
this.lauantaiKpl = lauantaiKpl;
this.sunnuntaiKpl = sunnuntaiKpl;
this.salaatit = salaatit;
this.pääruoat = pääruoat;
this.jälkiruoat = jälkiruoat;
this.erityisruokavalio = erityisruokavalio;
this.avainTieto = avainTieto;
this.lisätiedot = lisätiedot;
this.laskutusOsoite = laskutusOsoite;
this.yhteyshenkilönNimi = yhteyshenkilönNimi;
this.yhteyshenkilönPuhelinnumero = yhteyshenkilönPuhelinnumero;
this.yhteyshenkilönSähköposti = yhteyshenkilönSähköposti;
this.dinnerMaanantaiKpl = dinnerMaanantaiKpl;
this.dinnerTiistaiKpl = dinnerTiistaiKpl;
this.dinnerKeskiviikkoKpl = dinnerKeskiviikkoKpl;
this.dinnerTorstaiKpl = dinnerTorstaiKpl;
this.dinnerPerjantaiKpl = dinnerPerjantaiKpl;
this.dinnerLauantaiKpl = dinnerLauantaiKpl;
this.dinnerSunnuntaiKpl = dinnerSunnuntaiKpl;
this.dinnerSalaatit = dinnerSalaatit;
this.dinnerPääruoat = dinnerPääruoat;
this.dinnerJälkiruoat = dinnerJälkiruoat;
}
/**
@@ -106,15 +50,16 @@ public class Asiakas implements TietokantaOlio {
* @return ArrayList<Asiakas>
*/
public static ArrayList<Asiakas> haeKaikki() {
ArrayList<Asiakas> asiakkaat = new ArrayList<>();
try (Connection tietokanta = Tietokanta.haeYhteys()) {
Statement stmt = tietokanta.createStatement();
ResultSet rs = stmt.executeQuery("select * from asiakkaat");
return parsiResultSet(rs);
ResultSet rs = stmt.executeQuery("select id, nimi from asiakkaat");
asiakkaat = parsiResultSet(rs);
} catch (SQLException e) {
SiirtoVirhe alert = new SiirtoVirhe(e);
alert.showAndWait();
return null;
}
return asiakkaat;
}
/**
@@ -129,7 +74,7 @@ public class Asiakas implements TietokantaOlio {
sbIDt.append(", ").append(IDt[i]);
}
try (Connection tietokanta = Tietokanta.haeYhteys()) {
String sql = "select * from asiakkaat where id in (" + sbIDt + ")";
String sql = "select id, nimi from asiakkaat where id in (" + sbIDt + ")";
Statement stmt = tietokanta.createStatement();
ResultSet rs = stmt.executeQuery(sql);
@@ -149,49 +94,15 @@ public class Asiakas implements TietokantaOlio {
}
/**
* Käsittelee ResultSettiä
* Olettaa resultsetin sisältävän id:n ja nimen
* @param rs saatu ResultSet
* @return ArrayList<Asiakas>
*/
private static ArrayList<Asiakas> parsiResultSet(ResultSet rs) {
ArrayList<Asiakas> asiakkaat = new ArrayList<>();
try {
while (rs.next()) {
int i = 1;
Asiakas uusi = new Asiakas(
rs.getInt(i++),
rs.getString(i++),
rs.getString(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getString(i++),
rs.getString(i++),
rs.getString(i++),
rs.getString(i++),
rs.getString(i++),
rs.getString(i++),
rs.getString(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++),
rs.getInt(i++)
);
asiakkaat.add(uusi);
asiakkaat.add(new Asiakas(rs.getInt("id"), rs.getString("nimi")));
}
}
catch (SQLException e) {
@@ -203,7 +114,6 @@ public class Asiakas implements TietokantaOlio {
/**
* Tallentaa uuden asiakkaan tietokantaan. Tietokanta luo automaattisesti id:n asiakkaalle.
*
*/
private boolean tallennaUusi() {
try (Connection tietokanta = Tietokanta.haeYhteys()) {
@@ -393,6 +303,53 @@ public class Asiakas implements TietokantaOlio {
};
}
private String haeString(String sarake) {
try (Connection conn = Tietokanta.haeYhteys()) {
PreparedStatement stmt = conn.prepareStatement("select ? from asiakkaat where id = ?");
stmt.setString(1, sarake);
stmt.setInt(2, this.id);
ResultSet rs = stmt.executeQuery();
rs.next();
return rs.getString(1);
}
catch (Exception e) {
Alert alert = new SiirtoVirhe(e);
alert.showAndWait();
}
return null;
}
private int haeInt(String sarake) {
try (Connection conn = Tietokanta.haeYhteys()) {
PreparedStatement stmt = conn.prepareStatement("select ? from asiakkaat where id = ?");
stmt.setString(1, sarake);
stmt.setInt(2, this.id);
ResultSet rs = stmt.executeQuery();
rs.next();
return rs.getInt(1);
}
catch (Exception e) {
Alert alert = new SiirtoVirhe(e);
alert.showAndWait();
}
return 0;
}
private Date haeDate(String sarake) {
try (Connection conn = Tietokanta.haeYhteys()) {
PreparedStatement stmt = conn.prepareStatement("select ? from asiakkaat where id = ?");
stmt.setString(1, sarake);
stmt.setInt(2, this.id);
ResultSet rs = stmt.executeQuery();
rs.next();
return rs.getDate(1);
}
catch (Exception e) {
Alert alert = new SiirtoVirhe(e);
alert.showAndWait();
}
return null;
}
public int getId() {
return id;
@@ -411,6 +368,9 @@ public class Asiakas implements TietokantaOlio {
}
public String getOsoite() {
if (osoite == null) {
osoite = haeString("osoite");
}
return osoite;
}
@@ -419,6 +379,9 @@ public class Asiakas implements TietokantaOlio {
}
public int getMaanantaiKpl() {
if (maanantaiKpl == 0) {
maanantaiKpl = haeInt("maanantaiKpl");
}
return maanantaiKpl;
}