Weergegeven resultaten: 1 t/m 11 van 11

Discussie: JDBC

  1. #1
    Member
    Lid sinds
    17/11/08
    Locatie
    9000
    Berichten
    669
    iTrader
    1 (100%)

    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.

  2. #2
    Approved 9-lifer T0tec's schermafbeelding
    Lid sinds
    18/01/07
    Locatie
    Geraardsbergen/Gent
    Berichten
    625
    iTrader
    1 (100%)
    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.

  3. #3
    Vin
    Vin is offline
    Member
    Lid sinds
    26/07/02
    Locatie
    Lokeren/Gent
    Berichten
    883
    iTrader
    1 (100%)
    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.

  4. #4
    Member
    Lid sinds
    17/11/08
    Locatie
    9000
    Berichten
    669
    iTrader
    1 (100%)
    Bedankt

    het is goed gelukt.

    ik moet dit exceptions nog wat gewoon worden.

  5. #5
    Member
    Lid sinds
    17/11/08
    Locatie
    9000
    Berichten
    669
    iTrader
    1 (100%)
    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

  6. #6
    Member YaMo's schermafbeelding
    Lid sinds
    19/02/06
    Locatie
    -
    Berichten
    3.805
    iTrader
    1 (100%)

  7. #7
    Vin
    Vin is offline
    Member
    Lid sinds
    26/07/02
    Locatie
    Lokeren/Gent
    Berichten
    883
    iTrader
    1 (100%)
    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.
    Laatst gewijzigd door Vin; 21 juni 2012 om 21:29 Reden: bool, boolean, een pot nat

  8. #8
    Member Kemblin's schermafbeelding
    Lid sinds
    14/05/03
    Locatie
    Schoten
    Berichten
    818
    iTrader
    1 (100%)
    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.

  9. #9
    Member
    Lid sinds
    17/11/08
    Locatie
    9000
    Berichten
    669
    iTrader
    1 (100%)
    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\\')]*";

  10. #10
    Member Kemblin's schermafbeelding
    Lid sinds
    14/05/03
    Locatie
    Schoten
    Berichten
    818
    iTrader
    1 (100%)
    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

  11. #11
    Member
    Lid sinds
    17/11/08
    Locatie
    9000
    Berichten
    669
    iTrader
    1 (100%)
    Citaat Oorspronkelijk geplaatst door b0red Bekijk bericht


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


    Citaat Oorspronkelijk geplaatst door Kemblin Bekijk bericht
    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!!
    Laatst gewijzigd door Mikey_1; 25 juni 2012 om 07:00

Discussie informatie

Users Browsing this Thread

Op dit moment bekijken 1 gebruikers deze discussie. (0 leden en 1 gasten)

Regels voor berichten

  • Je mag geen nieuwe discussies starten
  • Je mag niet reageren op berichten
  • Je mag geen bijlagen versturen
  • Je mag niet je berichten bewerken
  •