Thread: JDBC
-
19-06-2012, 19:48 #1Member
- Registered
- 17/11/08
- Location
- 9000
- Posts
- 720
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
JDBC
Hallo
ik zit met een database van bijv: 100 getallen. (JDBC + mysql)
ik moet een nummer ingeven en dan moet ik de gewenste informatie krijgen van de database. (bijv: als ik als ingave geef "10" dan krijg ik de gegevens van klantennummer 10) dat lukt me goed.
maar ik zit vast met een paar controlepunten
-ik moet controleren of het allemaal getallen zijn. (geen alfabet) (ik krijg momenteel een foutmelding)
-en het moet een cijfers zijn dat in mijn database voorkomt .( dus als ik nr 7ingeef, en mijn database heeft geen nummer 7 moet dat opgevangen worden.)
hoe moet ik dit doen?
met try en catch? en welke code?
bijv: ik moet de fout opvangen als ik een cijfer ingeef dat de database niet heeft.no votes
-
-
20-06-2012, 03:39 #2Approved 9liver
- Registered
- 19/01/07
- Location
- Geraardsbergen
- Posts
- 1,096
- iTrader
- 3 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/7
Voor het te controleren of het een nummer is gewoon een methode isNumeric schrijven die een bool (true/false) teruggeeft. Is niet zo moeilijk om zelf te schrijven.
Voor het 2de gwn een try catch die een SqlException opvangt lijkt me het makkelijkst.no votes
-
20-06-2012, 04:20 #3Member
- Registered
- 26/07/02
- Location
- Lokeren/Gent
- Posts
- 861
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/2
Controle op ingevoerde getal:
Je query is waarschijnlijk van de vorm "select something from sometable where getal = opgegevenGetal"Code:String ingelezenWaarde; int getal; // of double of iets dergelijk try { getal = Integer.parseInt(ingelezenWaarde); // of Double.parseDouble(...) ofzo } catch (NumberFormatException e) { // Geef fout }
Als je opgegeven getal niet in je database voorkomt, krijg je waarschijnlijk een lege resultset terug. Je kan dus vooraleer je je resultaten verwerkt controleren of de resultset leeg is (met een methode zoals someResultSet.isAfterLast() vermoed ik), en vervolgens een fout opwerpen.no votes
-
20-06-2012, 18:55 #4Member
- Registered
- 17/11/08
- Location
- 9000
- Posts
- 720
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
Bedankt
het is goed gelukt.
ik moet dit exceptions nog wat gewoon worden.no votes
-
21-06-2012, 19:02 #5Member
- Registered
- 17/11/08
- Location
- 9000
- Posts
- 720
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
Hallo
ik heb nog een bijkomende vraag (misschien zullen er nog andere vragen volgen
)
ik heb een swing paneel gemaakt, waar ik bijv: een naam moet ingeven. (in een Jtextfield)
ik moet (via een try/catch, denk ik) kunnen controleren of de invoer juist is.
(dus alleen maar alfabeth)
ik dacht dat ik een array zou maken.
bijv: array[] alfa= {"a", "b", "c", ......, "z") en dan een while lus die alle karakters controleert.
is dit goed? of is er een andere en betere manier?
grtzno votes
-
21-06-2012, 19:10 #6Member
- Registered
- 19/02/06
- Location
- -
- Posts
- 4,048
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 2/73
Ik denk dat dit een goeie manier is:
java - How to filter illegal/forbidden filename characters from user's keyboard input in JTextField? - Stack Overflowno votes
-
21-06-2012, 22:16 #7Member
- Registered
- 26/07/02
- Location
- Lokeren/Gent
- Posts
- 861
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/2
Validatie van invoer kan je op verschillende manieren doen
- Met een FocusListener, waar je je invoer controleert als je tekstveld de focus verliest,
- met een InputVerifier
- Met een geformatteerd tekstveld (JFormattedTextField)
- ...
Hoe dan ook, om te controleren of de invoer een getal is heb je die array met alle karakters helemaal niet nodig. Je haalt gewoon de string van het tekstveld op en probeert deze te parsen naar een getal, indien een exceptie wordt opgeworpen weet je dat er iets verkeerd liep. Met andere woorden, je gebruikt gewoon de code die ik hierboven getypt heb.
[edit]
Ik had die "alleen alfabet" niet gelezen, excuses.
Je kan strings matchen aan reguliere expressies in Java. De reguliere expressie die jij nodig zal hebben is iets van de vorm
^[a-zA-Z]+$
of indien de + operator niet ondersteund wordt
^[a-zA-Z][a-zA-Z]*$
Bekijk hiervoor zeker eens de documentatie van de String klasse in Java, en google gerust ook eens naar "regular expression" of "regex" (of "regexp") indien dit allemaal een beetje chinees voor je is.
Een andere geforceerde manier zou zijn: heel je string karakter per karakter overlopen, vervolgens de volgende controle uitvoeren voor elk karakter
Je moet in dit geval geen excepties meer opvangen.Code:char testKarakter = uwString.charAt(eenIndex); boolean isLetter = (testKarakter >= 'a' && testKarakter <= 'z') || (testKarakter >= 'A' && testKarakter <= 'Z');Last edited by Vin; 21-06-2012 at 22:29. Reason: bool, boolean, een pot nat
no votes
-
22-06-2012, 14:16 #8Member
- Registered
- 14/05/03
- Location
- Schoten
- Posts
- 812
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 1/7
normaal doe je dit het best met javax.validation
-> Chapter*2.*Validation step by step
dan kan je met annotaties op de variabelen in uw model werken. Heel duidelijk en eenvoudig. Maar vermits je geen ORM library gebruikt zal je idd iets alla b0red zijn antwoord moeten doen.there you gono votes
-
23-06-2012, 12:08 #9Member
- Registered
- 17/11/08
- Location
- 9000
- Posts
- 720
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
ik heb wat gezocht op het internet en ik kwam op zo een code terecht (die ik niet ken, ziet er wel makkelijk uit, maar ik versta niet echt die code
onderstaande voorbeeld die ik gevonden heb was alleen voor het toelaten van letters met accenten.
String ch="l'aaééé -ZZZ 125";
String tab[] = ch.split(":");
String numbers = "/^[\\p{L}0-9(\\,\\-\\w\\.\\s\\')]*";
if(Pattern.matches(numbers,ch.trim())) {
System.out.print("\n okokokok" );
}else{
System.out.print("\n neeneeneenee" );
}
(er was een fout, en dan moest er iets veranderd worden in dit =>
[\p{L}0-9(\,\-\w\.\s\')]+
kan er iemand me dit uitleggen? => "/^[\\p{L}0-9(\\,\\-\\w\\.\\s\\')]*";no votes
-
23-06-2012, 14:20 #10Member
- Registered
- 14/05/03
- Location
- Schoten
- Posts
- 812
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 1/7
dat is een regex (reguliere expressie), die gaat matchen op een bepaalde sequentie van karakters. Een goed referentiepunt is Regular-Expressions.info - Regex Tutorial, Examples and Reference - Regexp Patterns
there you gono votes
-
24-06-2012, 17:49 #11Member
- Registered
- 17/11/08
- Location
- 9000
- Posts
- 720
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
Last edited by Mikey_1; 25-06-2012 at 08:00.
no votes

