Avatar billede niwikr Nybegynder
18. oktober 2002 - 15:31 Der er 7 kommentarer og
1 løsning

ResultSet som parameter

Hej

Jeg har en applikation som jeg har kørt på et webhotel med mySql, hvor det har fungeret fint. Nu har jeg skiftet webhotel (også mySql)og det hele virker fint. næsten..

Jeg har noget kode der lign. nedenstående

private static ResultSet getResultSet(){

.
.
.
con.close()
return rs
}

private static void methodB(){
.
.
.

ResultSet aSet = getResultSet()

while(aSet.next())
    statement.executeUpdate("insert into aTable(name) values("+aSet.getString(1)+") ");

.
.
}

i methodB kalder jeg getResultSet får at få et ResultSet og derefter bruge det til at opdatere en ny tabel med.
Det virkede fint på det tidligere hotel. Men ikke på det nye.
Det virker som om at getResultSet nok returnerer et ResultSet, men at det efter det returneres fra metoden getResultSet() er tomt.

Nogen der har en ide om hvorfor
Avatar billede disky Nybegynder
18. oktober 2002 - 15:39 #1
prøv at kald en:
.beforeFirst();

På det lige efter du har været i den metode du mener tømmer det.
Avatar billede niwikr Nybegynder
18. oktober 2002 - 15:50 #2
Det har jeg prøvet, det hjælper ikke.

Jeg har prøvet i metoden getResultSet at skrive indholdet ud til loggen og det viser at der er noget. efterfølgende i den nye metode der kalder, har jeg kørt beforeFirst() og prøvet at skrive det samme ud. og der kommer intet.

Jeg har også prøver blot at

aSet.getString(1);

får jeg følgende exception;

java.sql.SQLException: can't get column after next() returns false

Derfor tror jeg aldrig jeg kommer ind i (aSet.next()) eftersom false sikkert returneres første gang.

Det er også mystisk for det er samme kode der har kørt fint på et andet hotel og lokal maskine. Kan det være noget med versioner af enten mySql eller java at gøre.

Det gamle var

java 1.3.1 så vidt jeg husker
mySql:MySQL 3.23.53a

nye er:
java :java version "1.3.1_05"
mysql:MySQL 3.23.52

så det er jo ikke fordi forskellen er stor
Avatar billede niwikr Nybegynder
18. oktober 2002 - 16:36 #3
Jeg har lige test på det gamle webhotel og der virker koden fint, dyb mystik!!

kan det være noget med server opsætningen? (resin begge steder)

eller jdbc driveren. Det er to forskellige der bruges?
Avatar billede disky Nybegynder
18. oktober 2002 - 17:33 #4
hmmm,

du skal kalde aSet.next(); inden du forsøger at hente data.

Ellers skulle det gerne virke.
Avatar billede niwikr Nybegynder
18. oktober 2002 - 17:45 #5
Jeg tror jeg er på vej til at finde ud af hvad det kan skyldes.

se her:
http://forum.java.sun.com/thread.jsp?thread=278452&forum=48&message=1133739

Der er åbenbart en der har haft samme problem. Det hænger selvfølgelig nok sammen med at jeg lukker mit statement. Men hvorfor det opfører sig forskelligt under forskellige drivere ???????
Avatar billede disky Nybegynder
18. oktober 2002 - 17:56 #6
Det lyder som det er årsagen.

Jeg parser altid hele resultset og laver objekter som jeg smider på en arraylist inden jeg lukker for tingene igen.

prøv evt. det.
Avatar billede niwikr Nybegynder
18. oktober 2002 - 17:59 #7
Jep, jeg er igang ;)

tak for deltagelsen
Avatar billede arne_v Ekspert
18. oktober 2002 - 18:23 #8
Øh.

Som jeg læser din kode får du kaldt connection close
inden du begynder at bruge dit resultset.

Det tror jeg ikke på virker ved alle databaser og
med alle datamængder.
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