Avatar billede learnmejava Nybegynder
19. november 2002 - 14:00 Der 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.
Avatar billede disky Nybegynder
19. november 2002 - 14:11 #1
.setText(gliderIdU);

På dit textfelt object.

Når du vil gemme henter du værdien af textfelt og putter det ind i en 'update' eller 'insert' statement til databasen.
Avatar billede magoo20000 Nybegynder
19. november 2002 - 14:25 #2
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.

Om det er pænt design kan så diskuteres.
Avatar billede learnmejava Nybegynder
19. november 2002 - 15:10 #3
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 :-) )
Avatar billede magoo20000 Nybegynder
19. november 2002 - 16:10 #4
private DatabaseForbindelse dinDbKalsse; reference til klassen DatabaseForbindelse

private void addJTextField()//en metode, som bliver kald fra contructoren.
{
pane.add(input);
input.setText(""+dinDbKalsse.getGlider(gid));
}

Din getGlider skal så returnere dit gliderId.
Avatar billede magoo20000 Nybegynder
19. november 2002 - 16:26 #5
og husk i din constructor i din GUI-klasse:

public GUI(DatabaseForbindelse dinDbKalsse){
this.dinDbKalsse = dinDbKalsse;
}
Ellers får du en null-pointer.

Jeg har bare kaldt din gui fr GUI - ved jo ik hvad den hedder!
Avatar billede learnmejava Nybegynder
19. november 2002 - 17:17 #6
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)
Avatar billede magoo20000 Nybegynder
19. november 2002 - 17:31 #7
Hedder din GUI Sogning, så skriver du:
Class Sogning....{

private DatabaseForbindelse d;

public Sogning(DatabaseForbindelse d, int gid) throws SQLException, ClassNotFoundException{
this.d = d;
}
Og derefter

private void addJTextField(){
pane.add(input);
input.setText(""+d.getGlider(gid));
}
Avatar billede learnmejava Nybegynder
19. november 2002 - 17:33 #8
det har jeg gjort, men hvordan laver jeg et nyt "objekt" af sogning?
Avatar billede learnmejava Nybegynder
19. november 2002 - 17:34 #9
Sogning s = new Sogning(?????????????)
Avatar billede magoo20000 Nybegynder
19. november 2002 - 18:09 #10
Hvorfor et Sognings objekt?
Må jeg se koden til denne klasse?
Avatar billede magoo20000 Nybegynder
19. november 2002 - 18:11 #11
Hele kode:)
Avatar billede learnmejava Nybegynder
19. november 2002 - 18:18 #12
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....
---------------
Avatar billede magoo20000 Nybegynder
19. november 2002 - 18:59 #13
Lav en klasse ved navn Main, der indeholder

public static void main(String[] args){
DatabaseForbindelse d = new DatabaseForbindelse();
Sogning program = new Sogning(d);
}
Og slet main fra din Sogning.

Men er gid noget man indtaster oder was?
Avatar billede learnmejava Nybegynder
19. november 2002 - 19:01 #14
Yes det er det...
Avatar billede magoo20000 Nybegynder
19. november 2002 - 19:23 #15
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.
Avatar billede learnmejava Nybegynder
19. november 2002 - 19:29 #16
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));
Avatar billede magoo20000 Nybegynder
19. november 2002 - 19:48 #17
Lige for en sikkerheds skyld: Man indtaster gid i Sogning, ik!?
For så er løsningen lige til. F.eks. ved:

int gid = tekstfelt.getText().trim();
.....
input.setText(""+d.getGlider(gid));
Avatar billede learnmejava Nybegynder
19. november 2002 - 19:55 #18
Nej ikke helt...
Der sker følgende:

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");

  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);
}
----------

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 :-)
Avatar billede learnmejava Nybegynder
19. november 2002 - 23:17 #19
Jeg takker for hjælpen  - jeg har fundet en løsning
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester