I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
vareNr = new JList(); vareNr.setBounds(260, 26, 183, 200); vareNr.setVisible(false); frame.getContentPane().add(vareNr);
final JLabel varenrLabel = new JLabel(); varenrLabel.setText("VareNr og beskrivelse"); varenrLabel.setBounds(260, 3, 183, 14); varenrLabel.setVisible(false); frame.getContentPane().add(varenrLabel);
Du er godt klar over at du aldrig vil kunne sammenknytte varenummer og varetekst med ovenstående kode, ikke? Det du skal gøre i stedet er at oprette en klasse der indeholder ovenstående informationer:
public class Vare { private String vareNr, vareTekst;
public String getVareTekst() { return vareTekst; }
public String toString() { return vareTekst; } }
Og din klasse ser nu sådan her ud (jeg har sat metoden til at returnere listen med varer):
public class Colli { static ResultSet rs; static Statement stmt;
public static Vare[] hentTotalAntal() { try //laver en try catch så mulige fejl fra SQL fanges { Statement stmt = Forbindelse.connection.createStatement(); rs = stmt.executeQuery("SELECT VareNr, lagervare FROM vare");
ArrayList<Vare> totalAntal= new ArrayList<Vare>();
while (rs.next()) //der køres en while løkke i lige så lang tid som der er elementer { String vareNr = rs.getString("VareNr"); String vareTekst = rs.getString("lagervare"); Vare vare = new Vare (vareNr, vareTekst); totalAntal.add (vare); }
return totalAntal.toArray(new Vare[0]);
} catch(Exception e) //Her er der fastsat at alle fejl skal fanges og { System.out.print("\nDer opstod en fejl under hentningen \n"); } } }
3)
Nu skal indholdet fyldes i din JList:
... Vare[] alleVarer = Colli.hentTotalAntal(); // Hent alle varer vareNr = new JList(alleVarer); // Opret JList med de hentede varer vareNr.setBounds(260, 26, 183, 200); vareNr.setVisible(false); ...
Og for ikke at få compile-fejl i 2'eren må du nok hellere indsætte følgende:
catch(Exception e) //Her er der fastsat at alle fejl skal fanges og { System.out.print("\nDer opstod en fejl under hentningen \n"); return new Vare[0]; }
public class Vare { private int vareNr; private String beskrivelse; private String enhed; private double pris; private int antal; private String lokation; static Statement stmt; //statement som bruges til at udføre kommandoer på databasen.
public static void opretVare(int vareNr, String beskrivelse, String enhed, double pris, int lagervare)throws Exception {
try { Statement stmt = Forbindelse.connection.createStatement(); stmt.executeUpdate("INSERT INTO vare VALUES ("+vareNr+", '"+beskrivelse+"', '"+enhed+"', "+pris+", "+lagervare+");"); } catch(Exception e) { System.out.print("\nVaren kunne ikke oprettes !!\nFindes højst sansynlig allerede\n"); } finally { System.out.print("\nVare blev oprettet"); } }
public static void sletVare(int vareNr) { try { Statement stmt = Forbindelse.connection.createStatement(); stmt.executeUpdate("DELETE FROM vare WHERE vareNr = "+vareNr+""); } catch(Exception e) { System.out.print("\nKunne ikke slette varen !\n"); } finally { System.out.print("Varenr "+vareNr+" Blev slettede"); } }
public static void retVare(int vareNr, String beskrivelse, String enhed, double pris, int lagervare) { try { Statement stmt = Forbindelse.connection.createStatement(); stmt.executeUpdate("UPDATE vare SET beskrivelse = '"+beskrivelse+"', enhed = '"+enhed+"', pris = "+pris+", lagervare = "+lagervare+" WHERE vareNr = '"+vareNr+"'"); } catch(Exception e) { System.out.print("\nVaren kunne ikke ændres !\n"); } finally { System.out.print("vareNr "+vareNr+" blev ændret til, beskrivelse = "+beskrivelse+", enhed = "+enhed+", pris = "+pris+", lagervare = "+lagervare+" WHERE vareNr = '"+vareNr+"'"); }
}
public void findVare(int vareNr, int antal) {
}
public void opdaterVareBeholdning(int vareNr, int antal, String lokation) {
}
public static int visVare(int vareNr) { int k = 0 ; ResultSet antal = null; try {
Statement stmt = Forbindelse.connection.createStatement(); antal = stmt.executeQuery("SELECT lagervare FROM vare WHERE VareNr = "+vareNr+""); } catch(Exception e) { System.out.print("\nVaren kunne ikke ændres !\n"); } finally { System.out.print("\nvareNr "+vareNr+" har en lagerbeholdning på ");
}
try { while (antal.next()) //der køres en while løkke i lige så lang tid som der er elementer { k = Integer.parseInt(antal.getString("lagervare"));//tager elmentet som ligger under VareNr og tilføjer til totalAntal } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.print(k); return k; }
Det der er det jeg vil kalde en "Manager/controller" klasse - den håndterer alle dine CRUD funktioner. Det jeg snakker om er et domæne-objekt som du kan kalde Vare.
Jeg vil ikke "flette" noget ind i din nuværende vare-klasse.
Du kalder bare domæneobjektet noget andet end Vare, f.eks. VareEnhed og giver den alle de egenskaber dine varer nu har i databasen (ligesom jeg var begyndt på i min Vare-klasse).
Dine metoder bliver så til noget a la:
public static void retVare(int vareNr, String beskrivelse, String enhed, double pris, int lagervare)... bliver til: public static void retVare(VareEnhed vare)...
public static void sletVare(int vareNr) bliver til: public static void sletVare(VareEnhed vare)...
public static void opretVare(int vareNr, String beskrivelse, String enhed, double pris, int lagervare) bliver til: public static void opretVare(Vare vare)...
Osv osv osv... (hvis du forstår)
Ovenstående må også betegnes som den "rigtige" måde at gøre det på - om ikke andet så den "objekt-orienterede" måde at gøre det på.
I den metode jeg lavede om tidligere skal du så bare ændre den til at returnere VareEnhed i stedet for Vare.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.