Database Ingevoerde gegevens weergeven

Status
Niet open voor verdere reacties.

Warranty

Gebruiker
Lid geworden
3 nov 2006
Berichten
100
Ik had weer ff een vraagje. Het is gelukt om een database koppeling op te zetten en er gegevens uit te lezen.

Code:
    public Patientbekijken4() {
        try {

            jbInit();

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
            Connection conn = DriverManager.getConnection(
                    "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ=c:/Erusmus.mdb;");
            Statement lezen = conn.createStatement();

            ResultSet rs = lezen.executeQuery(
                    "SELECT * FROM Tabel3 where Patientnr = 1");

            while (rs.next()) {
                // Variabelen
                String Patientnr = rs.getString("Patientnr");
                String Voornaam = rs.getString("Voornaam");
                String Achternaam = rs.getString("Achternaam");
                String Geboortedatum = rs.getString("Geboortedatum");
                String Geslacht = rs.getString("Geslacht");
                String Kamer = rs.getString("Kamer");
                String Adres = rs.getString("Adres");
                String Postcode = rs.getString("Postcode");
                String Woonplaats = rs.getString("Woonplaats");
                String Verzekeringnr = rs.getString("Verzekeringnr");
                //String Polisnr = rs.getString("Polisnr");
                //String Medicijn = rs.getString("Medicijn");
                //String Frequentie = rs.getString("Frequentie");
                tekstveld1.setText(Patientnr);
                tekstveld2.setText(Voornaam);
                tekstveld3.setText(Achternaam);
                tekstveld4.setText(Geboortedatum);
                tekstveld5.setText(Geslacht);
                tekstveld6.setText(Kamer);
                tekstveld7.setText(Adres);
                tekstveld8.setText(Postcode);
                tekstveld9.setText(Woonplaats);
                tekstveld10.setText(Verzekeringnr);
                //tekstveld11.setText(Polisnr);
                //tekstveld12.setText(Medicijn);
                //tekstveld13.setText(Frequentie);
            }

            //Extra
            System.out.println("Connected To Access");
            conn.close();
            //Extra

        }

        catch (Exception exception) {
            exception.printStackTrace();
        }
    }

Op deze manier leest hij de gegevens uit de database waar patiennr 1 is en zet ze in de tekstvakken die ik heb aangegeven. Nou wil ik geen vaste waarde aangeven. Op deze manier geeft hij namelijk natuurlijk steeds weer patientnr 1 zijn gegevens op.

Ik maak tekstvak 1 editable met een knopje er naast zodat je zelf een patientnr kan invullen, op het knopje kan drukken, en de gegevens verschijnen. Maar nou is de vraag hoe ik dat doe.

Ik zat te denken aan een if functie, of kan ik "where patientnr = 1" gewoon vervangen door een variabele ofzo?

Dankje voor de hulp! :thumb: :thumb:
 
Als je het dynamisch gaat maken, dan kan je deze code wel weer uit de constructor weghalen..
Deze code wordt 1x aangeroepen en kan je dus niet nog een keer aanroepen.

Wat ik zou doen, is een functie maken "vulVelden(int patientNr)", waarin je die code neerzet (database connectie, query, velden vullen, database sluiten).

Dan kan je heel makkelijk die code weer gebruiken, je roept gewoon de functie aan en geeft het patientnummer mee :thumb:

(patientnummer ophalen doe je met tekstveld.getText() ;) wellicht nog een conversie naar een int (Integer.parseInt(tekstveld.getTekst())))
 
Laatst bewerkt:
Maar kan dat ook in de sql code?

Code:
"SELECT * FROM Tabel3 where Patientnr = tekstveld.getText() ");

Zoiets wil ik bereiken. Alleen de vraag is hoe. Want de letterlijke code hierboven werkt niet.
 
Aaah laat maar. Ik heb het al. Wat ik dus wou was dit:

Code:
String  nr = tekstveld1.getText();

//blabla

"SELECT * FROM Tabel3 where Patientnr = " + nr + "");

Dit doet het hem. Alleen nu heb ik nog een vraag. Hoe kan ik in meerdere tabellen data wegschrijven?

Dit is wat ik nu heb:

Code:
"INSERT INTO Tabel3, Tabel1 (voornaam, achternaam, geboortedatum, geslacht, kamer, adres, postcode, woonplaats, verzekeringnr, naam) VALUES ('" + voornaam + "','" + achternaam + "','" + geboortedatum + "','" + geslacht + "', '" + kamer + "', '" + adres + "', '" + postcode + "', '" + woonplaats + "', '" + verzekeringnr + "', '" + naam + "')");

De laatste variabele ( + naam + ) zit in Tabel 1 maar zoals de code hierboven staat werkt het niet. Hoe schrijf ik binnen 1 frame naar meerdere tabellen in de database?
 
Volgens mij móet je daar meerdere queries voor gebruiken, is niet anders :)
 
Het is gelukt. Het enige waar ik nog gigantische problemen mee heb is de relaties e.d. ivm de sql code in java.

Het zit namelijk zo.

Er is een Patient tabel, in die tabel staat ook een verzekeringnr. die gekoppeld is aan zijn eigen tabel. In zijn eigen tabel is dat de primaire sleutel uiteraard en is het vak autonummering. Maar in de Patient tabel is hij gewoon nummeriek.

Ik heb het gevoel dat het daaraan ligt. Ik kan vanuit mijn proggy niet in die verschillende tabellen wegschrijven omdat hij zegt dat er een relatie is en dat een benodigt record vereist is ofzo. Erg vervelend.

Ik heb nu dit:

Code:
    class Knop2Handler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            String  voornaam = tekstveld2.getText();
            String  achternaam = tekstveld3.getText();
            String  geboortedatum = tekstveld4.getText();
            String  geslacht = tekstveld5.getText();
            String  kamer = tekstveld6.getText();
            String  adres = tekstveld7.getText();
            String  postcode = tekstveld8.getText();
            String  woonplaats = tekstveld9.getText();
            String  polisnr = tekstveld10.getText();
            String  verzekering = tekstveld11.getText();
            String  medicijn = tekstveld12.getText();
            String  frequentie = tekstveld13.getText();
            String  verplegingnr = tekstveld20.getText();
            String  verplegernaam = tekstveld21.getText();
            String  verplegercode = tekstveld22.getText();
            String  verpleegdatum = tekstveld23.getText();
            String  omschrijving = tekstarea1.getText();

            try {

                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
                Connection conn = DriverManager.getConnection(
                        "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ=c:/Erusmus.mdb;");

                Statement ttoevoegen = conn.createStatement();
                ttoevoegen.executeUpdate(
                        "INSERT INTO Patient (voornaam, achternaam, geboortedatum, geslacht, kamer, adres, postcode, woonplaats, polisnr, verzekering, medicijn, frequentie, verplegingnr, verplegernaam, verplegercode, verpleegdatum, omschrijving) VALUES ('" + voornaam + "','" + achternaam + "','" + geboortedatum + "','" + geslacht + "', '" + kamer + "', '" + adres + "', '" + postcode + "', '" + woonplaats + "', '" + polisnr + "', '" + verzekering + "', '" + medicijn + "', '" + frequentie + "', '" + verplegingnr + "', '" + verplegernaam + "', '" + verplegercode + "', '" + verpleegdatum + "', '" + omschrijving + "')");

//Extra
                System.out.println("Connected To Access");
                conn.close();
//Extra

            }

            catch (SQLException se)
            {
                System.out.println(se);
            }

            catch (Exception ex)
            {
                System.out.println(ex);
            }

        }
    }

Zoals je ziet schrijf ik nu in 1 tabel met alle gegevens. Maar wat ik eigenlijk wil is voor dit te laten werken:

Code:
Statement t1toevoegen = conn.createStatement();
                t1toevoegen.executeUpdate(
"INSERT INTO Patient (voornaam, achternaam, geboortedatum, geslacht, kamer, adres, postcode, woonplaats) VALUES ('" + voornaam + "','" + achternaam + "','" + geboortedatum + "','" + geslacht + "', '" + kamer + "', '" + adres + "', '" + postcode + "', '" + woonplaats + "')");
Statement t2toevoegen = conn.createStatement();
                t2toevoegen.executeUpdate(
"INSERT INTO Verzekering (polisnr, verzekering) VALUES ('" + polisnr + "','" + verzekering + "')");

Hij geeft dus steeds de error dat het niet kan omdat er een benodigt record mist in de tabel verzekering.

Eigenlijk heb ik nog meer tabellen met meer relaties maar als ik er 1 weet te fixen, weet ik ze allemaal natuurlijk.

Als iemand mij kan helpen dank ik u (weeeeer) vriendelijk :thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan