Avatar billede esset Nybegynder
10. december 2003 - 00:56 Der er 5 kommentarer og
1 løsning

Hvorfor bliver resultset lukket ?

Jeg har flg. kode:

                Statement stmt = con.createStatement();
                stmt.execute("USE " + dataBean.getDatabaseConnection().getDatabaseName());
                query = "SELECT * FROM tbl_CottagePeriods WHERE Locked = 1 AND BookingOpenTo < getdate()";
                rs = stmt.executeQuery(query);
                Vector bookingTableRowsVector = new Vector();
                Vector bookingTableColumnVector = new Vector();
                while (rs.next()) {
                    dataBean.addPeriodInfo(rs.getString("Cottage_ID") + ": " + rs.getDate("DateFrom") + " - " + rs.getDate("DateTo"));
                    bookingTableColumnVector.addElement(this.languageBean.getBookingTableHeaderName());
                    bookingTableColumnVector.addElement(this.languageBean.getBookingTableHeaderEmail());
                    bookingTableColumnVector.addElement(this.languageBean.getBookingTableHeaderAccept());
                    query = "SELECT * FROM tbl_CottageBookings where Period_Id = " + rs.getString("Id");
                    rs1 = stmt.executeQuery(query);
                    while (rs1.next()) {
                        Vector bookingTableRowVector = new Vector();
                        bookingTableRowVector.addElement(rs1.getString("Name"));
                        bookingTableRowVector.addElement(rs1.getString("Email"));
                        bookingTableRowVector.addElement(this.languageBean.getBookingButtonApprove());

                        bookingTableRowsVector.addElement(bookingTableRowVector);
                    }
                    dataBean.addBookingTableViewModel(
                        getBookingTableViewModel(bookingTableColumnVector, bookingTableRowsVector));
                        bookingTableRowsVector = new Vector();
                        bookingTableColumnVector = new Vector();
                }

Alle variabler m.m. er erklæret. Mit problem er at der er 2 records i første resultset, men jeg når kun igennem første gennemløb. Efterfølgende får jeg denne fejlmeddelelse:

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.

Nogen fornuftig forklaring ??
Avatar billede dsj Nybegynder
10. december 2003 - 01:03 #1
Er du sikker på du når hele vejen igennem første record? Måske er det nestede select der går galt, altså rs1...
Avatar billede arne_v Ekspert
10. december 2003 - 08:07 #2
Prøv og lav 2 connections til samme database. En til hver af de to
queries/Statement/ResultSet.
Avatar billede soelvpil Nybegynder
10. december 2003 - 21:05 #3
Hvilken linje opstår fejlen i? Hvis du laver printStackTrace() på din exception og poster den her, kan vi nok hjælpe bedre.
Avatar billede esset Nybegynder
10. december 2003 - 22:10 #4
Jeg har afprøvet det du sagde arne_v og det virkede, så point til dig. Du skal lige skrive et svar. Kan du evt. forklare hvorfor et resultset objekt bliver lukket når et nyt med andet variabel navn bliver oprettet.
Avatar billede arne_v Ekspert
10. december 2003 - 22:14 #5
svar
Avatar billede arne_v Ekspert
10. december 2003 - 22:18 #6
Et normalt ResultSet henter ikke alle data ved executeQuery - det er
faktisk next metoden som henter data løbende.

Og når du går tilstrækkeligt langt ned i en Connection så er der en socket.

Og det går i kage med 2 result set som læser data fra samme socket.
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