Avatar billede genvej Nybegynder
28. november 2001 - 09:52 Der er 4 kommentarer og
1 løsning

indsæt data i ResultSet

I forbindelse med en test skal jeg bruge nogle tips til at manipulere med et resultset uden at have adgang til en database!!! Noget lignende dette->

ResultSet rs,
rs.insertChar(1,\'a\');
rs.insertChar(2,\'b\');
rs.insertChar(3,\'c\');

kan det lade sig gøre ???
Avatar billede genvej Nybegynder
28. november 2001 - 10:08 #1
test
Avatar billede andersb Nybegynder
29. november 2001 - 11:50 #2
Jeg forstår ikke helt: Du vil opdatere et resultset-objekt, der ikke er forbundet til en database/connection!?
ResultSet-objektet må være \"født\" af en Connection. Når man lukker den, så bliver ResultSet-objektet også ubrugeligt.

Hold din Connection åben og
brug ResultSet-metoden
public void updateInt(String columnName,int x)

Husk at kalde insertRow eller updateRow, så opdateringerne også får effekt i databasen - og ikke kun i ResultSet-objektet.

- Anders www.rhs.dk/anders
lærer på datamatikeruddannelsen i Roskilde
Avatar billede genvej Nybegynder
29. november 2001 - 11:57 #3
Jeg har måske været lidt uklar....
Sagen er jeg har lavet en metode der returnerer et resultset... Denne metode skal jeg (i forbindelse med test) udelukkende bruge som stub hvor der kan lægges statiske/hardkodede data ind (IKKE fra en database) det skal kunne være fra eksempelvis en tekstfil, hardkoded eller whatever!! Stadig skal min metode returnere et resultset... Det er i denne forbindelse jeg ønsker at kunne indsætte noget i mit resultset som senere kan returneres
Avatar billede wizzcat Nybegynder
29. november 2001 - 18:00 #4
Anders har ret i at du ikke kan rette i et Resultset uden en database.
(Medmindre du selv vil implementerer interfacet og lave din egen udgave)
Et Resultset er ikke bare et object med alle de nødvendige oplysninger. Det er en slags kontroller der henter lidt ad gangen fra en DB og efterhånden som man trækker data ud så henter den lidt mere data i DB. Resultsættet er derfor helt afhængig af en connection for at kunne leverer data. Så du kan ikke bare rette i et Resultset, ligesom du heller ikke kan gemme det eller sende det videre og bruge connectionen til noget andet.
Man manipulerer altså ikke resultsæt, men databaser!
Avatar billede logical Nybegynder
30. november 2001 - 10:08 #5
Hvis det er ren test (Og du ved hvad der skal ske, så...


public class TestStub implements ResultSet {
  private String[] colNames = { \"Words\", \"Of\", \"Wisdom\" };

  private String[][] values = {
      {\"Hej\", \"med\", \"dig\" },
      {\"Dav\", \"med\", \"dig\" }
  };

  private int current = -1;
  private boolean done = false;

  public boolean next() {
    current++;
    done = current==values.length;
    return done;
  }

  // Sample implementering af de 2 getString metoder..
  public String getString(String columnName) throws SQLException{
    if (done) throw new SQLException(\"No more rows\");
    int i = indexOf(columnName);
    return values[current][i];
  }

  public String getString(int colindex) throws SQLException {
  if (colindex <=0 || colindex > colNames.length)
    throw new SQLException(\"Invalid column index\");
  if (done) throw new SQLException(\"No more rows\");
  return  values[current][colindex-1];
  }

  private int indexOf(String name) throws SQLException {
    for (int i = 0 ; i < colNames.length; i++)
        if (colNames[i].equalsIgnoreCase(name)) return i;

    throw new SQLException(\"Invalid column name\");
  }
}



Du skal selv implementere de metoder, som du skal anvende, og resten af metoderne i ResultSet interfacet kan du jo bare efterlade blank, eller endnu bedre: throw new SQLException(\"Cannot apply this method\");

Det er nemt at udvide scenariet til at læse fra en fil, hvor du læser derudaf, med første linie består af kolonnenavne, og de øvrige er data. Hver linie kan du splitte med en StringTokenizer og læse elementerne separat.
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