[Java] een ingetypte waarde zoeken in de db

Pagina: 1
Acties:
  • 37 views sinds 30-01-2008

  • knackje
  • Registratie: Oktober 2003
  • Laatst online: 24-04 14:38
Hallo,

Heb het nu eindelijk voor elkaar om de gehele inhoud van de film DB in een arraylist te tonen na het indrukken van een knop. Nu wil ik ook op een titel kunnen zoeken.

Lijkt mij dat het op zo´n zelfde manier gaat. Alleen moet de query waarschijnlijk aangepast worden en moet er aangegeven worden op welke waarde er gezocht moet worden want hij moet op de ingetypte waarde van een text veld zoeken.

De code om de gehele inhoud van mij Db in een arraylist te zetten is:

code:
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
public ArrayList geefFilmLijst() {
        ArrayList gevondenFilms = new ArrayList();
        
        PreparedStatement pstmt;
        ResultSet resultaat;
        
        try {
            pstmt = deDatabaseConnectie.prepareStatement("SELECT * FROM Film ORDER BY titel");
            resultaat = pstmt.executeQuery();
            while (resultaat.next()) {
                Film eenFilm = new Film();
                eenFilm.settitel_nr(resultaat.getString("titel_nr"));
                eenFilm.settitel(resultaat.getString("titel"));
                eenFilm.setregiseur(resultaat.getString("regiseur"));
                eenFilm.setacteur(resultaat.getString("acteur"));
                eenFilm.settijdsduur(resultaat.getString("tijdsduur"));
                
                
                gevondenFilms.add(eenFilm);
            }
            pstmt.close();
        }
        catch (SQLException eSql) {
            System.out.println( "Filmlijst zoeken: "  + eSql.toString());
        }
        
        return gevondenFilms;


Wat moet ik veranderen dat er gezocht wordt naar de waarden die ik een text veld genaamd: jtitel heb ingetikt.

knackje

[ Voor 6% gewijzigd door knackje op 06-04-2004 22:26 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

erhm... Volgens mij is het volledig nutteloos om voor titel een veld met het type text aan te maken.

Daarna kan je met een simpele "Like" statement de juiste WHERE clausule formuleren.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • knackje
  • Registratie: Oktober 2003
  • Laatst online: 24-04 14:38
HUh ??, dat snap ik niet helemaal.


Wat dus de bedoeling is:

Wanneer iemand een film wil zoeken, moet er de mogelijkheid zijn om op een titel te kunnen zoeken. Daarom wil ik een textveld om het scherm zetten. Zodat daar een titel ingevoerd kan worden.

Wanneer er op een knop zoeken gedrukt wordt moet er dus een actie komen dat er op die titel in de db gezocht wordt. En dat dus de film met die titel en overige waardes in een arraylist komt.

knackje

[ Voor 7% gewijzigd door knackje op 06-04-2004 22:31 ]


  • Vaudtje
  • Registratie: April 2002
  • Niet online
code:
1
2
3
pstmt = deDatabaseConnectie.prepareStatement(
       "SELECT * FROM Film WHERE title like ? ORDER BY titel");
pstmt.addParameter("%" + jtitel.getValue() + "%");

zoiets.

[ Voor 13% gewijzigd door Vaudtje op 06-04-2004 22:35 ]

In deeze zin staan drie fauten


  • knackje
  • Registratie: Oktober 2003
  • Laatst online: 24-04 14:38
code:
1
pstmt.addParameter("%" + jtitel.getValue() + "%");


Ik begrijp dus dat hiermee de waarde uit jtitel wordt gehaald. Maar wat doen die "%" ?

Ga het gelijk ff uitproberen

knackje

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

knackje schreef op 06 april 2004 @ 22:38:
code:
1
pstmt.addParameter("%" + jtitel.getValue() + "%");


Ik begrijp dus dat hiermee de waarde uit jtitel wordt gehaald. Maar wat doen die "%" ?

Ga het gelijk ff uitproberen

knackje
Dat zijn wildcards.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Vaudtje
  • Registratie: April 2002
  • Niet online
Die '%' zijn wildcards, en afhankelijk van je database zouden het ook wel eens '*' kunnen moeten wezen. Maar zoek daarvoor in de documentatie van je DB even naar het LIKE statement.

Offtopic: Is deze wijze van SQL (parameterized query met ongenormaliseerde tekst) nou eignelijk gevoelig voor code insertion?

In deeze zin staan drie fauten


  • knackje
  • Registratie: Oktober 2003
  • Laatst online: 24-04 14:38
FF nog een kort vraagje hierover. Wanneer ik jouw code toevoeg krijg ik de melding dat jtitel niet wordt herkend.

IK maak gebruik van meerdere class. jtitel is dus alleen bekend bij de class: scherm. en dus niet bij de class: database

Hoe kan ik er voor zorgen dat hij wel bekend wordt bij de class database.

bedankt

knackje

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

meegeven als parameter aan de functie?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • knackje
  • Registratie: Oktober 2003
  • Laatst online: 24-04 14:38
en hoe zou ik dat moeten doen. Sorry hoor, maar heb met dit nog niet veel ervaring

knackje

Verwijderd

Je maakt een nieuwe functie (geefFilmLijstOpTitel oid) met een String parameter:

code:
1
 public ArrayList geefFilmLijstOpTitel(String titel)
Vaudtje schreef op 06 april 2004 @ 22:35:
code:
1
2
3
pstmt = deDatabaseConnectie.prepareStatement(
       "SELECT * FROM Film WHERE title like ? ORDER BY titel");
pstmt.addParameter("%" + jtitel.getValue() + "%");

zoiets.
En daar maak je dan iets van zoals:
code:
1
2
3
pstmt = deDatabaseConnectie.prepareStatement(
       "SELECT * FROM Film WHERE title like ? ORDER BY titel");
pstmt.addParameter("%" + titel + "%");


Misschien een goed idee om eens een Java boekje te gaan lezen :)
http://mindview.net/Books (thinking in java)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:15

.oisyn

Moderator Devschuur®

Demotivational Speaker

Hoi
knackje
Wij tweakers doen elkaar permanent de groeten, dus dat hoeft niet elke keer onder je post. Wil je het per se dan kun je dat natuurlijk ook in je signature zetten (kun je instellen in je profile)

Verder is het handig als je eens een SQL tutorial en een Java boek door gaat lezen, want de dingen die je vraagt zijn nogal basic. Het feit dat je niet eens weet hoe je parameters moet toevoegen aan een functie geeft eigenlijk al een beetje aan dat je geen idee hebt waar je mee bezig bent :) Misschien handig om eerst gewoon Java onder de knie te krijgen voordat je je met databases bezig gaat houden?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1

Dit topic is gesloten.