Situatie:
Resultaten van aangeroepen functie:
Dit resultaat snap ik: 'admin' komt namelijk letterlijk voor.
Omdat wildcards kunnen wisselen naargelang gebruikte server/taal/... heb ik alle (mij bekende) mogelijkheden geprobeert.
Groep 1:
Groep 2:
Van alle gebruikte wildcards hadden er mijn inziens 2 'true' moeten opleveren?
- MSSQL-server, wordt benaderd via een jdbc-odbc brug
- tabel 'objects' bestaat, met de kolommen 'objectid' (integer - 4 bytes groot) en 'objectnumber' (char, 42 karakters)
- een record met als 'objectnumber' 'admin' bestaat, bijhorend 'objectid' is 151824
- gebruikte jre & jdk zijn de java 6 update 16
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| private boolean objectExists(String objectnummer, String wildcard){ boolean found = false; try { PreparedStatement g = conTMS.prepareStatement("SELECT objectid FROM objects WHERE objectnumber = ? or objectnumber like ?"); g.setString(1, objectnummer); g.setString(2, objectnummer+wildcard); ResultSet rs = g.executeQuery(); while (rs.next()) { found = true; System.out.println("we hebben resultaten gevonden"); } rs.close(); g.close(); } catch (Exception ex) { ex.printStackTrace(); } return found; } |
Resultaten van aangeroepen functie:
code:
1
| objectExists("admin", "%") => true |
Dit resultaat snap ik: 'admin' komt namelijk letterlijk voor.
Omdat wildcards kunnen wisselen naargelang gebruikte server/taal/... heb ik alle (mij bekende) mogelijkheden geprobeert.
Groep 1:
code:
1
2
| objectExists("admi", "*") => false objectExists("admi", "?") => false |
Groep 2:
code:
1
2
| objectExists("admi", "%") => false objectExists("admi", "_") => false |
Van alle gebruikte wildcards hadden er mijn inziens 2 'true' moeten opleveren?
- er worden géén exceptions gegooid door de functie
- als ik in MS Access een query maak op dezelfde tabel, via dezelfde odbc-connectie, krijg ik met zoeken op "admi*" of "admi?" wel een objectid terug.
- de "we hebben resultaten gevonden" wordt enkel in de eerste aanroep geprint => de aanroepen met "admi" + wildcard geven lege resultsets.
- dat ik hier Nederlands en Engels door elkaar gebruik hier weet ik, dat dat geen goede zaak is weet ik ook, maar voor puur debuggen kan het volgens mij - dit is uiteraard géén productiecode
- ik heb al zowat iedere sql-tutorial doorgenomen, samen met de java-tutorials, ik zie de fout niet vrees ik
[ Voor 0% gewijzigd door roeleboel op 08-10-2009 12:17 . Reden: typo-tjes ]