19. november 2002 - 14:00Der er
18 kommentarer og 1 løsning
Fra DB til GUI til DB
Hejsa Jeg har hentet noget data ud af min database (MySql): ---------- ResultSet rs = stmt.executeQuery("SELECT * FROM glider WHERE gliderid="+ gid +" ORDER BY gliderid DESC"); int gliderIdU = rs.getInt(1); ---------- Hvordan får jeg så vist "glideridU" i et textfelt, hvor jeg kan rette værdien og så gemme den nye værdi i DB'en? Skriv endelig hvis du mangler nogle oplysninger - takker.
Når du så vil gemme opdateede oplysningen i db igen kalder på getText() på dit textfelt og sender det som parameter ned til den klasse, som har ansvaret for at gemme det i db. F.eks:
int gliderId = ditTextField.getText().trim();
dbHandler.update(gliderId);
Hvor dhHandler er der, hvor du har din Dbadgang, ResultSets, update-metode og alt det der.
Jeg har altså lidt problemer med at få det til at spille sammen Objectet hentes ud fra klassen "DatabaseForbindelse" med: ----------------- public getGlider(int gid) throws SQLException, ClassNotFoundException { ResultSet rs = stmt.executeQuery("SELECT * FROM glider WHERE gliderid="+ gid +" ORDER BY gliderid DESC"); int gliderIdU = rs.getInt(1); String gliderTypeU = rs.getString(2); boolean gliderStatusU = rs.getBoolean(3); int gliderSeatsU = rs.getInt(4); double gliderFlightHoursU = rs.getDouble(5); } -------------- Så har jeg en GUI, der skal tage i mod mit output i klassen "Sogning": -------------- private void addJTextField()//en metode, som bliver kald fra contructoren. { pane.add(input); //TextField input bliver addet på Containeren, pane. input.setText(??????????????????????????); //her vil jeg fx gerne have værdiern fra String gliderTypeU } ------------ Hvad dælen gør jeg? Jeg er ikke så skrap til JAVA (endnu :-) )
Ja, jeg får en null-pointer... Men hvis jeg sætter "DatabaseForbindelse dinDbKalsse" ind i constructoren, så skal jeg jo have den med som argument... Min construtor ser sådan her ud: ------------- public Sogning(DatabaseForbindelse d, int gid) throws SQLException, ClassNotFoundException ------------- Min constructor til DatabaseForbindelse er tom
Så hvordan giver jeg den et argument af typen DatabaseForbindelse jeg har prøvet disse 5 forskellige indput, men ingen virker:
Sogning s = new Sogning("", 2) Sogning s = new Sogning( , 2) Sogning s = new Sogning(d, 2) Sogning s = new Sogning(d.this, 2) Sogning s = new Sogning(this, 2)
Ja, det må du gerne -------------------- import java.sql.*; import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class Sogning {
public static void main(String[] args) { Sogning program = new Sogning(?????????????????????); }//end main.
private DatabaseForbindelse d;
JFrame frame = new JFrame(); Container pane = frame.getContentPane();
private JButton quit = new JButton("Afslut"); private JButton hit = new JButton("Søg på true"); private JTextField input = new JTextField();
public Sogning(DatabaseForbindelse d, int gid) throws SQLException, ClassNotFoundException //contructor { this.d = d; frame.setTitle("Søg På Navne"); setLayout();//metodekald addJTextField(gid);//metodekald addJButtons();//metodekald addListener();//metodekald frame.pack();//framen bliver pakket frame.show();//framen bliver vist. }//end contructor
public void setLayout()//en metode, som bliver kald fra contructoren. { pane.setLayout(new GridLayout(3,1,1,1));//opret 4x4 grid med en pixel mellem hvert element. }
public void addJTextField(int gid) throws SQLException, ClassNotFoundException //en metode, som bliver kald fra contructoren. { pane.add(input); input.setText(""+d.getGlider(gid)); } osv.... ---------------
public static void main(String[] args){ DatabaseForbindelse d = new DatabaseForbindelse(); Sogning program = new Sogning(d); } Og slet main fra din Sogning.
Ok. Så gør som jeg skrev ovenover, men bagefter går jeg ud fra at du vil have det sådan, at man indtaster gid i et felt og så trykker på en knap, der sørger for at får relevant data hentet op fra db.? Du skal så også slette gid fra public Sogning(DatabaseForbindelse d, int gid) så det bliver til public Sogning(DatabaseForbindelse d) ellers passer det jo ik med det der står i Main.
Fair nok, men det var jo "gid" jeg skulle bruge til at hente ud af db'en - derfor er den med i -------------------------- - public Sogning(DatabaseForbindelse d, int gid) - addJTextField(gid);//metodekald - public void addJTextField(int gid) - input.setText(""+d.getGlider(gid));
1) Man har valgt "gid" i en menu og kommer så til denne GUI hvor man kan opdaterer værdierne tilhørende "gid"
2) Objektet trækkes ud af db'en og værdierne gennem i variaber i "DatabaseForbindelse" --------- public getGlider(int gid) { ResultSet rs = stmt.executeQuery("SELECT * FROM glider WHERE gliderid="+ gid +" ORDER BY gliderid DESC");
3) De "gamle" værdier skal så vises i TextFelterne fx: ---------- public void addJTextField(int gid) throws SQLException, ClassNotFoundException { pane.add(input); input.setText(""+d.getGlider(gid)); } -----------
4) Den rettede værdi sendes tilbage til db'en og posten opdateres
Jeg er led ved at jeg er så besværlig, men nu har jeg siddet det meste af dagen med det og nu SKAL det bare til at virke :-)
Jeg takker for hjælpen - jeg har fundet en løsning
Synes godt om
Ny brugerNybegynder
Din løsning...
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.