Thread: JDBC

  1. #1

    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  

  2. #2
    t0tec's Avatar
    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  

  3. #3

    Registered
    26/07/02
    Location
    Lokeren/Gent
    Posts
    861
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/2
    Controle op ingevoerde getal:

    Code:
    String ingelezenWaarde;
    int getal;  // of double of iets dergelijk
    
    try
    {
        getal = Integer.parseInt(ingelezenWaarde);
        // of Double.parseDouble(...) ofzo
    }
    catch (NumberFormatException e)
    {
        // Geef fout
    }
    Je query is waarschijnlijk van de vorm "select something from sometable where getal = opgegevenGetal"
    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  

  4. #4

    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  

  5. #5

    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?

    grtz
    no votes  

  6. #6
    YaMo's Avatar
    Registered
    19/02/06
    Location
    -
    Posts
    4,048
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/73
    no votes  

  7. #7

    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
    Code:
    char testKarakter = uwString.charAt(eenIndex);
    boolean isLetter = (testKarakter >= 'a' && testKarakter <= 'z')
                    || (testKarakter >= 'A' && testKarakter <= 'Z');
    Je moet in dit geval geen excepties meer opvangen.
    Last edited by Vin; 21-06-2012 at 22:29. Reason: bool, boolean, een pot nat
    no votes  

  8. #8
    Kemblin's Avatar
    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 go
    no votes  

  9. #9

    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  

  10. #10
    Kemblin's Avatar
    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 go
    no votes  

  11. #11

    Registered
    17/11/08
    Location
    9000
    Posts
    720
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Quote Originally Posted by b0red View Post
    This quote is hidden because you are ignoring this member. Show


    [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.


    Quote Originally Posted by Kemblin View Post
    This quote is hidden because you are ignoring this member. Show
    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

    het was wat zoeken, ik kende die code niet maar is het me gelukt.
    dus Bedankt!!
    Last edited by Mikey_1; 25-06-2012 at 08:00.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in