Avatar billede slamkoder Nybegynder
26. februar 2003 - 10:49 Der er 15 kommentarer og
2 løsninger

ResultSet bruges igen

Hejsa Eksperten
Jeg er newbie både til eksperten og til programmering.
Jeg har 2 problemmer med noget database programmering.
1. Jeg får nogle data ud fra min database via
ResultSet navn = bla bla
hvordan bruger jeg dette til at indsaætte nogle data under det navn jeg fandt ?
Ligelede når jeg får output igen med
ResultSet adresse bla bla hvordan får jeg flytte dette over i en String ??

Jeg ved ikke hvor mang epoint dette er værd, så sig hvis de 3+ er for lidt eller for meget.
Avatar billede slamkoder Nybegynder
26. februar 2003 - 10:50 #1
jeg mente om de 30 pont er for lidt eller for meget ups )
Avatar billede magoo20000 Nybegynder
26. februar 2003 - 11:03 #2
String adresse= resultset.getString("adresse");
Avatar billede magoo20000 Nybegynder
26. februar 2003 - 11:05 #3
Jeg er ikke helt med på nr. 1, men du kalder simphelthen getString på dit resultset objekt, og angiver så som parameter den kolonne, hvis værdi du vil have i din streng.
Avatar billede slamkoder Nybegynder
26. februar 2003 - 11:28 #4
Hej
der hvor du skriver
String adresse= resultset.getString("adresse");
mener du ikke
String adresse = adresse.getString("adresse");
Den først kan jeg ikke kompile, og når jeg bruger den næste lige efter min ResultSet får jeg en SQLException

Det jeg skal er at finde en brugers id nr, og så over i en anden tabel og skrive nogle data ind under dettte nr.
Ligeledes vil jeg genrne kunne hente data ud fra dette id nr, f.eks adresser osv.
Avatar billede arne_v Ekspert
26. februar 2003 - 11:33 #5
Jeg tror at der er lidt "forvirring" omkring result set.

Et ResultSet er et query output d.v.s. 1 eller flere kolonner
og 0 eller flere rækker.

Lad os sige at du kalder dit result set for findBruger og der er
en kolonne ID som du er interesseret i, så er det:

ResultSet findBruger = stmt.executeQuery("SELECT .....");
String ID = findBruger.getString("ID");
Avatar billede magoo20000 Nybegynder
26. februar 2003 - 11:34 #6
Jeg plejer at gøre følgende (et eksempel):

public ResultSet doQuery(String sql){
        System.out.println("con"+con);
        if(con!=null){
            try{
                Statement stat=con.createStatement();
                return stat.executeQuery(sql);       
            }
            catch (SQLException e){
                e.printStackTrace(System.out);
            }
        }
        return null;
    }

Og derefter (evt. i en anden klasse)

ResultSet res = doQuery("Select id from Kunde where id = +"'id'"+");
Så kan du hente id'et vha.
String id = res.getString("id"); - id er navnet på din kolonneoverskrift i db.

Hvad mener du med at den ikke kan compile?
Avatar billede arne_v Ekspert
26. februar 2003 - 11:34 #7
Du kan ikke både have et result set ved navn adresse og
et felt/variabel med navn adresse.
Avatar billede magoo20000 Nybegynder
26. februar 2003 - 11:36 #8
Til mit eksempel bør også nævnes, at i klassen, hvor metoden doQuery befinder sig sker connection oprettelsen til db også.
Avatar billede magoo20000 Nybegynder
26. februar 2003 - 11:37 #9
Avatar billede slamkoder Nybegynder
26. februar 2003 - 11:38 #10
ok nu har jeg prøvet følgende:
ResultSet Id = stm.executeQuery(" en hel masse" );
String BrugerID = Id.getString("BrugerID");

når jeg kompilere dette og kører det, får jeg en SQLExceptiom
hvis jeg derimod udkommentere
String BrugerID = Id.getString("BrugerID");
så kører det fint
Hvad kan der være galt, jeg henter kun et id nr ud af min DB
Avatar billede magoo20000 Nybegynder
26. februar 2003 - 11:42 #11
Prøv med if(Id.next()) mellem de to linjer.
Avatar billede slamkoder Nybegynder
26. februar 2003 - 11:46 #12
Nu har jeg følgende kode:
try
      {
        Statement stm = connect.createStatement();
        ResultSet res = stm.executeQuery("Select brugerId FROM BrugerTabel WHERE BrugerNavn = '" + modtager+ "'");
        String BrugerId = res.getString("BrugerId");
      }
      catch (SQLException ex)
      {
        System.out.println("Kan ikke finde bruger");
      }

Når jeg kører den springer den til min SQLException, hvis linjen getstring // kører det fint, jeg kan ikke se hvad der er forkert.
Avatar billede arne_v Ekspert
26. februar 2003 - 11:46 #13
Prøv med:

ResultSet Id = stm.executeQuery(" en hel masse" );
Id.next();
String BrugerID = Id.getString("BrugerID");
Avatar billede arne_v Ekspert
26. februar 2003 - 11:46 #14
Et nyt result set står default før første række - ikke på første række.
Avatar billede magoo20000 Nybegynder
26. februar 2003 - 11:49 #15
Som jeg var inde på før mht. res.next():
try
      {
        Statement stm = connect.createStatement();
        ResultSet res = stm.executeQuery("Select brugerId FROM BrugerTabel WHERE BrugerNavn = '" + modtager+ "'");
res.next();       
String BrugerId = res.getString("BrugerId");
      }
      catch (SQLException ex)
      {
        System.out.println("Kan ikke finde bruger");
      }
Avatar billede slamkoder Nybegynder
26. februar 2003 - 11:54 #16
Mange tak for hjælpen begge 2 nu virker det, det var res.bext();/id.next(); jeg mamglede tusind tak, er det ok jeg giver jer 15 point hver, og er det et passende beløb for den her slags spørgsmål, da jeg er ny her, men tror at jeg vil komme til at bruge det ret ofte, pga de kompetente personer, og hurtige svartider ))
Avatar billede magoo20000 Nybegynder
26. februar 2003 - 11:55 #17
Fint med mig mht. pointgivning.
30 points totalt er efter min mening helt passende.
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