Avatar billede CarstenS Nybegynder
06. april 2010 - 18:07 Der er 6 kommentarer

Trække data ud fra database ud fra primary key.

Hej Eksperter, som start skal det nævnes at jeg er nybegynder.

Jeg har en database hvori jeg kan trække brugerens valgte kolonne ud og få dens primary key. Mit problem er herefter at jeg vil trække en integer ud fra brugerens valgte primary key kolonne.

Jeg har følgende kode, og det meste er nok forkert, men ved ikke helt hvordan jeg skal komme videre.


public ResultSet getPrisResultSet(){
            ResultSet resultSet = null;
           
            ResultSet rs;
        try {
            rs = preparedStatement.executeQuery("SELECT PRIS FROM PRODUKTER");
                if(Object selected = Produkter.produkterDropDown.getSelected() == rs.getInt()){
                int PRIS = rs.getInt(1);
                resultSet = PRIS;
                }
        } catch (SQLException ex) {
            Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        }
            return resultSet;
}


hvor Object selected = Produkter.produkterDropDown.getSelected(), er den valgte primary key.

Jeg skulle måske lave en for løkke i stedet, eller noget helt tredje? Det ovenstående kode, virker hvertfald slet ikke.
Avatar billede arne_v Ekspert
06. april 2010 - 18:29 #1
proev noget a la:

public ResultSet getPrisResultSet(){
    try {
        Resultset rs = stmt.executeQuery("SELECT PRIS FROM PRODUKTER WHERE id = " + produkterDropDown.getSelected());
        return rs;
    } catch (SQLException ex) {
        Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        return null;
    }
}

eller bedre:

public ResultSet getPrisResultSet(){
    try {
        pstmt = con.prepareStatement("SELECT PRIS FROM PRODUKTER WHERE id = ?");
        pstmt.setInt(1, produkterDropDown.getSelected());
        Resultset rs = pstmt.executeQuery();
        return rs;
    } catch (SQLException ex) {
        Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        return null;
    }
}
Avatar billede CarstenS Nybegynder
06. april 2010 - 19:22 #2
Hej Arne, og tak for dit svar.

Dit første eksempel giver rigtig go mening, tak for det! Jeg får dog følgende fejlmeddelelse af min IDE.

Non-static variable produkterDropDown cannot be referenced from a static context.

Jeg forstår dog ikke helt fejlmeddelelsen, da hele ideen med det er at den ikke er "static"?
Avatar billede arne_v Ekspert
06. april 2010 - 19:27 #3
Jeg kender jo ikke strrukturen i den kode.

Du skrev selv:

Produkter.produkterDropDown.getSelected()

maaske skal du bruge det.
Avatar billede CarstenS Nybegynder
06. april 2010 - 20:26 #4
Det har jeg gjort, jeg kan simpelthen ikke finde ud af hvad der menes med cannot be referenced from a static context. Har googlet det og kom frem til følgende:

Non-static Variable Cannot Be Referenced from a Static Context

Lots of things can give you a non-static variable cannot be referenced from a static context error message. But for beginning programmers, the most common cause is having a variable that's declared outside of the main method. It's no sin to declare such a variable, but because the main method is always static, you need some special help to make the main method refer to a variable that's declared outside the main method.

The quickest solution is to put the word static in front of the variable's declaration. But first, ask yourself why this variable's declaration isn't inside the main method. If there's no good reason, then move the variable's declaration so that it's inside the main method.

Så prøvede jeg at at putte static foran den her,

public static DropDown produkterDropDown = new DropDown();


og jeg fik ingen fejlmeddelelse længere, men den komponent som skal vise variablen er blank. Har prøvet at køre noget debugging for at se hvis den finder variablen, og det gør den ikke.

Her er metoden for at vise den, måske der er noget galt med den?

public String submitKnap_action() {
        Database db = new Database();
        String produkt = String.valueOf(produkterDropDown.getSelected());
        valgLabel.setText(db.getPrisResultSet());
        valgText.setValue(produkt);
        prisText.setValue(db.getPrisResultSet());
        gridPanel1.setRendered(true);
        return null;
}

Som du kan se har jeg prøvet både med en setText og en setValue.
Er helt på bar bund.
Avatar billede arne_v Ekspert
11. april 2010 - 19:27 #5
Vi skal nok se noget mere komplet kode for at kunne finde en vej frem.
Avatar billede arne_v Ekspert
13. juni 2010 - 04:56 #6
Kommet videre?
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