Toon posts:

[Java] JList wil niet gevuld worden

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het volgende probleem.
Ik heb een JList die ik wil vullen met waardes uit een database.
Op de een of andere manier wil dit maar niet lukken.
De belangrijkste stukken:

GUI.java
Java:
1
2
3
4
5
6
7
8
9
10
11
12
public class GUI extends JDialog implements ActionListener, MouseListener
{
  private DefaultListModel listModel = new DefaultListModel();
  private JList listArtist = new JList(listModel);
  private JScrollPane listScroller = new JScrollPane(listArtist);

  public void fillList(String firstLetter)
  {
    SQL sql = new SQL();
    sql.fillArtistFirstList(listModel, firstLetter);
  }
}


SQL.java
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class SQL
{
  public void fillArtistFirstList(DefaultListModel listModel, String firstLetter)
  {
    ResultSet resultaat;

    this.openDB();

    try
    {
      String sqlStmt = "SELECT artistNo, artistName FROM artist WHERE artistName like "+ "\"" + firstLetter +"%" + "\"" + "ORDER BY artistName ASC";
      Statement stmt = verbinding.createStatement();
      resultaat = stmt.executeQuery(sqlStmt);

      while (resultaat.next())
      {
        System.out.println(resultaat.getString("artistName"));
        listModel.addElement(resultaat.getString("artistName"));
      }

      stmt.close();
    }
    catch (SQLException eSql)
    {
      System.out.println(eSql.toString());
    }

    this.closeDB();
  }
}


Als ik listModel.addElement("bla"); in GUI.java zet, dan komt het wel gewoon terecht in de JList. Er gaat dus iets mis met het vullen van de JList vanuit SQL.java. Ik heb de code nu al tig keer gelezen en ik zie de fout maar niet. Weet iemand misschien wat hier fout gaat?

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 17-05 17:50

Robtimus

me Robtimus no like you

Klopt je query wel? En geeft die wel waardes terug? Maw: wordt er wel iets geprint op het moment dat je die method aanroept? Voer anders dezelfde query eens direct op de database uit, zonder Java. Want ik zie geen problemen in deze code.

Edit:
Java:
1
String sqlStmt = "SELECT artistNo, artistName FROM artist WHERE artistName like "+ "\"" + firstLetter +"%" + "\"" + "ORDER BY artistName ASC";
Maak hier het volgende eens van:
Java:
1
String sqlStmt = "SELECT artistNo, artistName FROM artist WHERE artistName like \"" + firstLetter +"%\" ORDER BY artistName ASC";

[ Voor 44% gewijzigd door Robtimus op 08-01-2005 22:55 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 17-05 11:36
Je mag toch zo geen varabele opnemen in het SQL statement?
Volgens mij moet dat zo:

code:
1
select waarde from tabel where voorwaarde = '"+variabele+"';



Tenminste, zo doe ik het altijd.
Volgens mij blijft daarom de ResultSet leeg en dus ook de JList.

[ Voor 26% gewijzigd door Kwistnix op 08-01-2005 23:31 ]


Verwijderd

IceManX schreef op zaterdag 08 januari 2005 @ 22:52:
Klopt je query wel? En geeft die wel waardes terug? Maw: wordt er wel iets geprint op het moment dat je die method aanroept? Voer anders dezelfde query eens direct op de database uit, zonder Java. Want ik zie geen problemen in deze code.
Die spatie tussen " en ORDER kan wel iets uitmaken natuurlijk.
Kijk trouwens eens naar PreparedStatement. Dat scheelt een hoop gedoe met escapen enzo.

Verwijderd

Topicstarter
Jongens, het werkt.
Het lag blijkbaar aan die spaties.

Het vreemde is dat die query eerst wel een resultaat gaf, want die System.out.println() werkte wel gewoon met de juiste output. 8)7

Nou ja, goed.. bedankt
Ik kan weer verder

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 17-05 17:50

Robtimus

me Robtimus no like you

FallenAngel666 schreef op zaterdag 08 januari 2005 @ 23:24:
Je mag toch zo geen varabele opnemen in het SQL statement?
Volgens mij moet dat zo:

code:
1
select waarde from tabel where voorwaarde = '"+variabele+"';



Tenminste, zo doe ik het altijd.
Volgens mij blijft daarom de ResultSet leeg en dus ook de JList.
Het enige verschil is dat de TS een like gebruikte ipv een where. Dus het mag wel degelijk.
Verwijderd schreef op zaterdag 08 januari 2005 @ 23:27:
[...]

Die spatie tussen " en ORDER kan wel iets uitmaken natuurlijk.
Kijk trouwens eens naar PreparedStatement. Dat scheelt een hoop gedoe met escapen enzo.
Ik had die ontbrekende spatie niet eens gezien, waarschijnlijk omdat er 3 constante strings aan elkaar worden geplakt. Dat kan er net zo goed 1 zijn dus.

Maar je hebt groot gelijk over de PreparedStatement, ik gebruik niet meer anders.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 17-05 11:36
IceManX schreef op zondag 09 januari 2005 @ 14:32:
[...]
Het enige verschil is dat de TS een like gebruikte ipv een where. Dus het mag wel degelijk.
Ah, dat wist ik niet :)
Pagina: 1