/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
ResultSet lukkes
Fra : Rene Iversen


Dato : 17-05-02 10:34

Er det muligt at holde et ResultSet åbent.

Mit problem består i at jeg kører en while lykke, hvor jeg henter de
forskellige data fra ResultSet'et...men jeg bliver også nødt til at kalde
nogle metoder i klassen...hvilket gør at ResultSet'et er lukket ved andet
gennemløb.

Mvh.

René Iversen



 
 
Morten (17-05-2002)
Kommentar
Fra : Morten


Dato : 17-05-02 10:39

Rene Iversen wrote:
> Er det muligt at holde et ResultSet åbent.
>
> Mit problem består i at jeg kører en while lykke, hvor jeg henter de
> forskellige data fra ResultSet'et...men jeg bliver også nødt til at kalde
> nogle metoder i klassen...hvilket gør at ResultSet'et er lukket ved andet
> gennemløb.

Åbner du et andet resultset i samme statement?



Rene Iversen (17-05-2002)
Kommentar
Fra : Rene Iversen


Dato : 17-05-02 11:33

"Morten" <usenet@kikobu.com> skrev>
> Åbner du et andet resultset i samme statement?
>
>
Nej, se koden længere nede i tråden



stk (17-05-2002)
Kommentar
Fra : stk


Dato : 17-05-02 10:41

En anden mulighed kunne være at gemme dit resultset i en vector inden du
kører videre?

Stefan



Dennis Thrysøe (17-05-2002)
Kommentar
Fra : Dennis Thrysøe


Dato : 17-05-02 11:14

Men som nævnt i en anden tråd for nyligt kan det potentielt kræve meget
hukommelse. Alt efter brug og behov selvfølgelig.

-dennis

stk wrote:
> En anden mulighed kunne være at gemme dit resultset i en vector inden du
> kører videre?
>
> Stefan
>
>


stk (17-05-2002)
Kommentar
Fra : stk


Dato : 17-05-02 11:24

> Men som nævnt i en anden tråd for nyligt kan det potentielt kræve meget
> hukommelse. Alt efter brug og behov selvfølgelig.
Den havde jeg overset, men jeg er helt enig. Dog er det
svar(setFetchDirection) ikke løsningen her. Jeg har selv samme problem og
løste det med en vector, men det er et meget lille rs.

Stefan



Dennis Thrysøe (17-05-2002)
Kommentar
Fra : Dennis Thrysøe


Dato : 17-05-02 11:16

Dit ResultSet bør kun lukkes hvis du kalder close() på dit ResultSet,
dit Statement, eller din Connection.

-dennis

Rene Iversen wrote:
> Er det muligt at holde et ResultSet åbent.
>
> Mit problem består i at jeg kører en while lykke, hvor jeg henter de
> forskellige data fra ResultSet'et...men jeg bliver også nødt til at kalde
> nogle metoder i klassen...hvilket gør at ResultSet'et er lukket ved andet
> gennemløb.
>
> Mvh.
>
> René Iversen
>
>


Morten (17-05-2002)
Kommentar
Fra : Morten


Dato : 17-05-02 11:26

Dennis Thrysøe wrote:
> Dit ResultSet bør kun lukkes hvis du kalder close() på dit ResultSet,
> dit Statement, eller din Connection.

Eller man bruger samme statement til at åbne et nyt result set. Et
statement er din cursor ned i databasen, hvorfor den kun kan pege
på een "sammenhæng". En fejl jeg kun kender alt for godt til :*)



Rene Iversen (17-05-2002)
Kommentar
Fra : Rene Iversen


Dato : 17-05-02 11:34


"Dennis Thrysøe" <dt@netnord.dk> skrev i en meddelelse
news:3CE4D86D.8050406@netnord.dk...
> Dit ResultSet bør kun lukkes hvis du kalder close() på dit ResultSet,
> dit Statement, eller din Connection.

ResultSet lukkes også automatisk...hvornår, ved jeg ikke...



Rene Iversen (17-05-2002)
Kommentar
Fra : Rene Iversen


Dato : 17-05-02 11:35

Min kode ser sådan ud:

Vector res = new Vector();
try
{
ResultSet rs =
statement.executeQuery( "SELECT * " +
"FROM OrdreLinie " +
"WHERE ordreNr = " + ordreNr );

while( rs.next() )
{
int antal = rs.getInt( "antal" );
double linieTotal = rs.getDouble( "linieTotal" );
Vare vare = findVare( rs.getString( "vareNr" ) );
res.add( new OrdreLinie( antal, vare, linieTotal ) );
}
}
catch( SQLException sqlex )
{
sqlex.printStackTrace();
}
return res;


hvis jeg udkommenterer Vare vare ...
og res.add...

kører det uden problemer, så det er som om, at ResultSet'et lukkes
automatisk, så snart jeg ikke arbejder med det.



Rene Iversen (17-05-2002)
Kommentar
Fra : Rene Iversen


Dato : 17-05-02 11:38

>
> Vector res = new Vector();
> try
> {
> ResultSet rs =
> statement.executeQuery( "SELECT * " +
> "FROM OrdreLinie " +
> "WHERE ordreNr = " + ordreNr );
>
> while( rs.next() )
> {
> int antal = rs.getInt( "antal" );
> double linieTotal = rs.getDouble( "linieTotal" );
> Vare vare = findVare( rs.getString( "vareNr" ) );
> res.add( new OrdreLinie( antal, vare, linieTotal ) );
> }
> }
> catch( SQLException sqlex )
> {
> sqlex.printStackTrace();
> }
> return res;
>
>
> hvis jeg udkommenterer Vare vare ...
> og res.add...
>
> kører det uden problemer, så det er som om, at ResultSet'et lukkes
> automatisk, så snart jeg ikke arbejder med det.

compileren siger at fejl sker i den linie der står while( rs.next() )

jeg har konstateret det er ved andet gennemløb...jeg får nemlig første linie
i rs returneret i min Vector



Dennis Thrysøe (17-05-2002)
Kommentar
Fra : Dennis Thrysøe


Dato : 17-05-02 11:50

Rene Iversen wrote:
> Min kode ser sådan ud:
>
> Vector res = new Vector();
> try
> {
> ResultSet rs =
> statement.executeQuery( "SELECT * " +
> "FROM OrdreLinie " +
> "WHERE ordreNr = " + ordreNr );
>
> while( rs.next() )
> {
> int antal = rs.getInt( "antal" );
> double linieTotal = rs.getDouble( "linieTotal" );
> Vare vare = findVare( rs.getString( "vareNr" ) );
> res.add( new OrdreLinie( antal, vare, linieTotal ) );
> }
> }
> catch( SQLException sqlex )
> {
> sqlex.printStackTrace();
> }
> return res;
>
>
> hvis jeg udkommenterer Vare vare ...
> og res.add...

Bruger du på nogen måde samme Connection eller Statement inden i
findVare() eller OrdreLinie()?

Det kan du nemlig ikke.

-dennis


Rene Iversen (17-05-2002)
Kommentar
Fra : Rene Iversen


Dato : 17-05-02 11:55


"Dennis Thrysøe" <dt@netnord.dk> skrev i en meddelelse
news:3CE4E05A.7050405@netnord.dk...
> Rene Iversen wrote:
> > Min kode ser sådan ud:
> >
> > Vector res = new Vector();
> > try
> > {
> > ResultSet rs =
> > statement.executeQuery( "SELECT * " +
> > "FROM OrdreLinie " +
> > "WHERE ordreNr = " + ordreNr );
> >
> > while( rs.next() )
> > {
> > int antal = rs.getInt( "antal" );
> > double linieTotal = rs.getDouble( "linieTotal" );
> > Vare vare = findVare( rs.getString( "vareNr" ) );
> > res.add( new OrdreLinie( antal, vare, linieTotal ) );
> > }
> > }
> > catch( SQLException sqlex )
> > {
> > sqlex.printStackTrace();
> > }
> > return res;
> >
> >
> > hvis jeg udkommenterer Vare vare ...
> > og res.add...
>
> Bruger du på nogen måde samme Connection eller Statement inden i
> findVare() eller OrdreLinie()?
>
> Det kan du nemlig ikke.

dough!!!! jo, det gør jeg da...er det ikke nok, hvis jeg blot sørger for at
hver metode har sin egent statement?

>
> -dennis
>



Dennis Thrysøe (17-05-2002)
Kommentar
Fra : Dennis Thrysøe


Dato : 17-05-02 12:01

Rene Iversen wrote:
> "Dennis Thrysøe" <dt@netnord.dk> skrev i en meddelelse
> news:3CE4E05A.7050405@netnord.dk...
>
>>Rene Iversen wrote:
>>
>>>Min kode ser sådan ud:
>>>
>>> Vector res = new Vector();
>>> try
>>> {
>>> ResultSet rs =
>>> statement.executeQuery( "SELECT * " +
>>> "FROM OrdreLinie " +
>>> "WHERE ordreNr = " + ordreNr );
>>>
>>> while( rs.next() )
>>> {
>>> int antal = rs.getInt( "antal" );
>>> double linieTotal = rs.getDouble( "linieTotal" );
>>> Vare vare = findVare( rs.getString( "vareNr" ) );
>>> res.add( new OrdreLinie( antal, vare, linieTotal ) );
>>> }
>>> }
>>> catch( SQLException sqlex )
>>> {
>>> sqlex.printStackTrace();
>>> }
>>> return res;
>>>
>>>
>>>hvis jeg udkommenterer Vare vare ...
>>>og res.add...
>>
>>Bruger du på nogen måde samme Connection eller Statement inden i
>>findVare() eller OrdreLinie()?
>>
>>Det kan du nemlig ikke.
>
>
> dough!!!! jo, det gør jeg da...er det ikke nok, hvis jeg blot sørger for at
> hver metode har sin egent statement?

Joeh, det burde virke. Man burde kunne have flere ResultSets (cursors)
åbne for en connection. De skal i så fald høre til hver sin Statement.

Men om det virker i det virkelige liv er ikke tilat vide, hvilken db
bruger du?

-dennis


Morten (17-05-2002)
Kommentar
Fra : Morten


Dato : 17-05-02 11:58

Dennis Thrysøe wrote:
> Rene Iversen wrote:
>
>> Min kode ser sådan ud:
>>
>> Vector res = new Vector();
>> try
>> {
>> ResultSet rs =
>> statement.executeQuery( "SELECT * " +
>> "FROM OrdreLinie " +
>> "WHERE ordreNr = " + ordreNr );
>>
>> while( rs.next() )
>> {
>> int antal = rs.getInt( "antal" );
>> double linieTotal = rs.getDouble( "linieTotal" );
>> Vare vare = findVare( rs.getString( "vareNr" ) );
>> res.add( new OrdreLinie( antal, vare, linieTotal ) );
>> }
>> }
>> catch( SQLException sqlex )
>> {
>> sqlex.printStackTrace();
>> }
>> return res;
>>
>>
>> hvis jeg udkommenterer Vare vare ...
>> og res.add...
>
>
> Bruger du på nogen måde samme Connection eller Statement inden i
> findVare() eller OrdreLinie()?

Du kan godt åbne flere statements i samme connection. Prøv at flytte dit
statement ind i try scope, så sikrer du dig at det ikke bruges i forkert
scope. Muligvis anvender findVare metoden samme statement.

try {
Statement statement = conn.createStatement("...");
...
}

Mvh Morten


Rene Iversen (17-05-2002)
Kommentar
Fra : Rene Iversen


Dato : 17-05-02 12:02


"Morten" <usenet@kikobu.com> skrev i en meddelelse
news:3CE4E243.50107@kikobu.com...
> Du kan godt åbne flere statements i samme connection. Prøv at flytte dit
> statement ind i try scope, så sikrer du dig at det ikke bruges i forkert
> scope. Muligvis anvender findVare metoden samme statement.
>
> try {
> Statement statement = conn.createStatement("...");
> ...

Det prøver jeg lige

> }
>
> Mvh Morten
>



Rene Iversen (17-05-2002)
Kommentar
Fra : Rene Iversen


Dato : 17-05-02 12:18

Det virker!!!

I skal ha' tak kloge Åger



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste