[java] java jdbc-odbc bug??

Pagina: 1
Acties:

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
Hoi mensen, na 1.5 dag aan et klooien te zijn kan ik alleen concluderen dat er een bug in de jdbc-odbc bridge zit. Of er zit een bug in m`n hoofd!

Keb dit naar sun gestuurd:

A DESCRIPTION OF THE PROBLEM :
When executing a query which uses distinct or group by the resultset contains an incorrect value of numberOfRows.

I have the following 2 tables in an Microsoft Access
database, 97, 2000 or 2002 all the same problem:

Table 1
-------

Name:
- Activity

Fields:
- Activity-ID, Autoincrement, Primary Key
- ActivityName, String

Data: ( 1 record )
- Activity-ID: 1
- ActivityName: JSP Programming

Table 2
-------

Name:
- Course

Fields:
- Course-ID, Autoincrement, Primary Key
- CourseName, String
- Activity-ID, foreignkey, references Activity.Activity-ID

Data: ( 3 records )
- Course-ID: 2
- CourseName: Week 1
- Activity-ID: 1

- Course-ID: 3
- CourseName: Week 2
- Activity-ID: 1

- Course-ID: 4
- CourseName: Week 3
- Activity-ID: 1

When I query for the following:

SELECT DISTINCT Activity.ActivityName FROM Activity,
Course WHERE Activity.[Activity-ID] = Cursus.[Activity-ID]

The ResultSet indicates that there are 3 rows, while there
is only 1 result!! The first row is filled with the ActivityName but the second two rows contain null values. I saw with the debugger (in JBuilder) that the value of numberOfRows in java.sql.ResultSet is 3, which isn`t correct, it should be 1! This is what`s causing the problem.

The correct output should be a resultset which have only 1
row with the value: 'JSP Programming'

I have tested the query in access but access does return a correct row count.


Regards, CK


Iemand een oplossing oid ? :)

Verwijderd

SELECT DISTINCT Activity.ActivityName FROM Activity,
Course WHERE Activity.[Activity-ID] = Cursus.[Activity-ID]
is je query? Ken jdbc-odbc en acces niet heel goed, maar als ik kijk naar boven:
Table 2
-------

Name:
- Course
dan denk ik dat je van de query dit:
SELECT DISTINCT Activity.ActivityName FROM Activity,
Course WHERE Activity.[Activity-ID] = Course.[Activity-ID]
zal moeten maken??? Je hebt geen tabel "cursus" bedoel ik dus.

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
Das een type foutje, wat je zegt is goed maar werkt alsnog niet hoor! M`n table name enzo waren nederlands, ff vertaald voordat ik het naar sun stuurde :)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

En hoe check de het aantal element in de result set? Als je een scrollable resultset maakt kan je dit doen:

rs.last();
int rowCount = rs.getRow();

en je kan met rs.absolute(rowIndex) gaan jumpen naar en row.

[edit] je hebt hem al gechecked :) sorry.. nog niet genoeg koffie op ;)

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
Op donderdag 14 maart 2002 14:05 schreef Alarmnummer het volgende:
En hoe check de het aantal element in de result set? Als je een scrollable resultset maakt kan je dit doen:

rs.last();
int rowCount = rs.getRow();

en je kan met rs.absolute(rowIndex) gaan jumpen naar en row.
precies dat deed ik en toen kreeg ik dus de fout! de interne counter in de class java.sql.ResultSet klopt niet! Deze zou 1 moeten zijn maar is 3. Bug dus?!?

Laat ik er maar even bij zeggen dat ik niet echt een java n00b ben :) Ik weet wat en waar het probleem zit maar of ik zie iets over het hoofd of er klopt gewoon iets niet een java, en ik vrees et laatste :) Keb trouwens al eens eerder bugs in java gevonden.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

En als je er even door heen gaat nexten op de ouderwetse manier?

ps: probeer anders eens een andere jdbc-odbc bridge.
http://industry.java.sun.com/products/jdbc/drivers

(alsof je die zelf niet kon vinden) ;)

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //loads the driver
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+ this.db;
Connection con = DriverManager.getConnection( url, "", "" );

Statement stmt = con.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE );
ResultSet rs = stmt.executeQuery("SELECT DISTINCT Activiteit.ActiviteitNaam FROM Activiteit, Cursus WHERE Activiteit.[Activiteit-ID] = Cursus.[Activiteit-ID] AND Cursus.[Seizoen-ID] = "+ sid );

rs.last();
Activiteit [] aa = new Activiteit[rs.getRow()];
rs.beforeFirst();

System.out.println( aa.length );

try
{
int i = 0;

while( rs.next() )
{
System.out.println( rs.getString("ActiviteitNaam") );
System.out.println( rs.getString("ActiviteitType") );
i++;
}
}
catch( Exception e )
{
System.out.println( e.getMessage() );
}

stmt.close();

is m`n code, eerste rs.next gaat goed, 2e hoor nooit te komen!! maar komt wel en klopt dus op een invalid cursor state, nullpointer omdat die row niet bestaat.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

ik heb zelf al heeeeele gekke dingen gehad met die concur updatable. Maak er eens concur readonly van...

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
nopes werkt ook niet :0 Bah ik kan het niet hebben he als het niet werkt!

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op donderdag 14 maart 2002 14:17 schreef CK het volgende:
nopes werkt ook niet :0 Bah ik kan het niet hebben he als het niet werkt!
Ga dan de rest van de middag even in c proggen dan ben je blij als je weer in java zit ;)

Het enigste dat ik kan bedenken is er even een andere jdbc-odbc bridge tussen te plaatsen. Dan kan je met zekerheid zeggen of die fout in de sun bridge zit.

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
denk dat ik dat maar even moet gaan proberen ja! thnx iig voor de moeite :)

  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
LOL @ Alarmnummer :D

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
shit wat het probleem is, jdbc-odbc ondersteunt geen scrollable resultsets, daarop ging et fout. :'( :'( :'( :'(

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op donderdag 14 maart 2002 15:13 schreef CK het volgende:
shit wat het probleem is, jdbc-odbc ondersteunt geen scrollable resultsets, daarop ging et fout. :'( :'( :'( :'(
Ik heb er geen problemen mee. Ik heb een sybase 5.0 database voor het testen en die spreek ik aan via odbc (ipv zijn native driver) en scrollable result sets zijn no problemo. Alleen vind hij updatable resultset niet leuk. Ik draai trouwens met jdk1.4

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
Op donderdag 14 maart 2002 15:16 schreef Alarmnummer het volgende:

[..]

Ik heb er geen problemen mee. Ik heb een sybase 5.0 database voor het testen en die spreek ik aan via odbc (ipv zijn native driver) en scrollable result sets zijn no problemo. Alleen vind hij updatable resultset niet leuk. Ik draai trouwens met jdk1.4
met access kan et iig niet :(

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op donderdag 14 maart 2002 15:22 schreef CK het volgende:

[..]

met access kan et iig niet :(
[flameMode]
Neem dan een echte db :)
[/flameMode]

Acccess vind ik voor een java programmeur een prut db. Er zijn genoeg andere te krijgen die bv wel gratis zijn en voldoende features ondersteunen, bv:
http://mckoi.com/database

  • GAEvakYD
  • Registratie: Juni 2001
  • Laatst online: 08:56
Gewoon Mysql gebruiken.

Heb ik totaal geen problemen mee, :9

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op donderdag 14 maart 2002 16:09 schreef GAEvakYD het volgende:
Gewoon Mysql gebruiken.

Heb ik totaal geen problemen mee, :9
hmmm.. laat ik daar maar niet op ingaan :+

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
mja kan wel met access blijkbaar dus toch bug?!?!

mysql roelt maar conversie van access naar mysql is kut en daarom gebruik ik die access db.

die db wordt gebruikt door een standalone programma maar moet ik ook ff met een jsp file uitlezen daarom gebruik ik die access meuk, doe je niet voor de lol hoor :)
Pagina: 1