Avatar billede flimmerdreng Nybegynder
12. juni 2005 - 13:00 Der er 44 kommentarer og
1 løsning

Angående søgning ud fra et tekstfelt via database

Jeg kunne godt tænke mig at få udskrevet de oplysninger om personerne jeg har liggende en af gangen. Min tabel hedder patienten og dens indhold er CPRnr, Patnavn, Patadresse, Patpostnr, Patcity, Pattlf. Det skal fungere således at jeg indtaster cprnummer i et teksfelt i min applet og eksekverer med en knap og så får jeg udskrevet alle oplysninger inkl. cprnummer i min skriveflade. Det skal være universelt dvs. at ønsker jeg en anden udskrevet, skal den andens oplysninger overskrives i skrivefladen.
Avatar billede arne_v Ekspert
12. juni 2005 - 13:26 #1
simpelt eksempel:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;

public class SimpleDBGUI extends JFrame implements ActionListener {
  private JButton find;
  private JTextField kunde;
  private JTextArea res;
  public SimpleDBGUI() {
      getContentPane().setLayout(new BorderLayout());
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setSize(400, 400);
      kunde = new JTextField();
      getContentPane().add(kunde, BorderLayout.NORTH);
      res = new JTextArea();
      getContentPane().add(res, BorderLayout.CENTER);
      find = new JButton("Søg");
      find.addActionListener(this);
      getContentPane().add(find, BorderLayout.SOUTH);
  }
  public void actionPerformed(ActionEvent evt) {
      try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con = DriverManager.getConnection("jdbc:odbc:TestMSAccess");
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM T1 WHERE F2='" + kunde.getText() + "'");
        while (rs.next()) {
            int ifelt = rs.getInt(1);
            String sfelt = rs.getString(2);
            res.setText(res.getText() + ifelt + " " + sfelt + "\r\n");
        }
      } catch (ClassNotFoundException e) {
        e.printStackTrace();
      } catch (SQLException e) {
        e.printStackTrace();
      }
  }
  public static void main(String[] args) {
      SimpleDBGUI f = new SimpleDBGUI();
      f.show();
  }
}
Avatar billede flimmerdreng Nybegynder
12. juni 2005 - 22:01 #2
OK det ser rigtig godt ud, men jeg har glemt at fortælle at jeg har delt det op i en applet og en database klasse. Kan jeg kalde linien res.setText(res.getText() + ifelt " " + sfelt "\r\n"); ved at oprette et objekt i appleten og kalde metoden jeg lægger den i. Hvis du ser mit eksempel med oplysningerne i databasen, så er ifelt hvad og sfelt hvad. jeg skal vel have flere. og din select * from T1 where F2=" + kunde.getText() + "");. er F2 CPRnummer.
Avatar billede flimmerdreng Nybegynder
12. juni 2005 - 22:07 #3
du får lige kildekoderne fra først min database klasse:

import java.util.*;
import java.sql.*;
import java.io.*;

public class Database
{
  Connection forb; 
  Statement stmt;
  ResultSet rs;
  String a = "";
  String b = "";
  String c = "";
  String d = "";
  String e  = "";


public  void ForbindDB()
{
try {
String url = "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\\Documents and Settings\\Flemming\\Dokumenter\\PATIENTER.mdb";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
forb = DriverManager.getConnection(url);
stmt = forb.createStatement();


}

catch (Exception err) {
System.out.println( "Error: " + err );
}
}

public String HentPat() throws SQLException
{       
        ForbindDB();
        rs = stmt.executeQuery("select * from patienten");

          while (rs.next())
          {  String cpr = rs.getString("CPRnr"); 
              String pnavn = rs.getString("PatNavn");
              String padresse = rs.getString("PatAdresse");
              int ppostnr = rs.getInt("PatPostnr");
              String pby = rs.getString("PatCity");
              int ptlf = rs.getInt("PatTlfnr");
              a = a+"\n"+cpr+"\n"+pnavn+"\n"+padresse+"\n"+ppostnr+"\n"+ptlf
              +"\n"+pby+"\n"+ptlf;
             
          }
         
         
           
            forb.close();
            return a;     
             
 
}
    public String HentFam() throws SQLException
{       
      try { 
       
        ForbindDB();
        rs = stmt.executeQuery("select * from patienten");
       
             
          while (rs.next())
          {  String cpr = rs.getString("CPRnr"); 
              String fnavn = rs.getString("Famnavn1");
              String fadresse = rs.getString("Famdresse1");
              int fpostnr = rs.getInt("Fampostnr1");
              String fby = rs.getString("Famcity1");
              int ftlf = rs.getInt("Famfasttlf1");
              int fmob = rs.getInt("Fammobil1"); 
              String fnavn2 = rs.getString("Famnavn2");
              String fadresse2 = rs.getString("Famadresse2");
              int fpostnr2 = rs.getInt("Fampostnr2");
              String fby2 = rs.getString("Famcity2");
              int ftlf2 = rs.getInt("Famfasttlf2");
              int fmob2 = rs.getInt("Fammobil2");
              b = b+"\n"+cpr+"\n"+fnavn+"\n"+fadresse+"\n"+fpostnr+"\n"+fby+"\n"+ftlf+"\n"+fmob+"\n"+fnavn2+"\n"+fadresse2+"\n"+fpostnr2+"\n"+fby2+"\n"+ftlf2+"\n"+fmob2;
//         
          }
      }

      catch (Exception fejl2)
              {
                fejl2.printStackTrace();
                System.out.println("Fejl i forbindelsen... Prøv senere " + fejl2);
                 
              }
        return b; 
}         
    public String HentDok() throws SQLException

        ForbindDB();
        rs = stmt.executeQuery("select * from doktor");
             
          while (rs.next())
          {  String cpr = rs.getString("CPRnr"); 
              String dnavn = rs.getString("Patdok");
              String dadresse = rs.getString("Patdokadresse");
              int dpostnr = rs.getInt("Patdokpostnr");
              String dby = rs.getString("Patdokcity");
              int dtlf = rs.getInt("Patdoktlf");
              c = c+cpr+"\n"+dnavn+"\n"+dadresse+"\n"+dpostnr+"\n"+dby+"\n"+dtlf;
             
          }
return c;         
}

    public String HentMed() throws SQLException

        ForbindDB();
        ResultSet rs = stmt.executeQuery("select * from medicin");
             
          while (rs.next())
          {  String med1 = rs.getString("Medicin1"); 
              String dgl1 = rs.getString("Meddgl1");
              String med2 = rs.getString("Medicin2");
              String dgl2 = rs.getString("Meddgl2");
              String med3 = rs.getString("Medicin3");
              String dgl3 = rs.getString("Meddgl3");
              String med4 = rs.getString("Medicin4");
              String dgl4 = rs.getString("Meddgl4");
              String med5 = rs.getString("Medicin5");
              String dgl5 = rs.getString("Meddgl5");
              String med6 = rs.getString("Medicin6");
              String dgl6 = rs.getString("Meddgl6");
              int dosis = rs.getInt("Meddato");
              d = d+med1+"\n"+dgl1+"\n"+med2+"\n"+dgl2+"\n"+med3+"\n"+dgl3+"\n"+med4+"\n"+dgl4+"\n"+med5+"\n"+dgl5+"\n"+med6+"\n"+dgl6+"\n"+dosis;
             
          }
return d;         
}
         
}       

og her er min applet

import java.util.*; 
import java.io.*; 
import java.applet.Applet; 
import java.awt.*; 
import java.awt.event.*;   
import java.sql.*;

public class Brugerflade extends Applet  implements ActionListener 
{                                                               

    public String username = "";
    public String password = ""; 
    boolean userValid = false;
    Button KnapDagplan, KnapFamilie, KnapAftaler, KnapMedicin, KnapJournal, KnapAndet, KnapOK, KnapOKCPR, KnapDoktor, KnapAndet2, KnapJournal2, KnapDagplan2, KnapAftaler2;
    TextArea SkriveFlade;
    TextField CPR;
    Label Forfatter, Til;
    String var1, var2, var3, var4;

    Database data ;   
   
    Aftaler aft = new Aftaler();
    Journal ajour = new Journal();
    Dagplan dag = new Dagplan();
    Andet and = new Andet();




    public void init() 

   
    {  setLayout(new FlowLayout());
      while (!userValid) login();


       
        CPR = new TextField("Indtast CPR-nummer");
        CPR.setColumns(12);
        CPR.setBackground(Color.green);
        KnapOKCPR = new Button("CPR OK");
        KnapOKCPR.setBackground(Color.green);
        KnapDagplan = new Button("Dagplan");
        KnapDagplan.setBackground(Color.blue);
        KnapDagplan2 = new Button("Opd. Dagplan");
        KnapDagplan2.setBackground(Color.blue);
        KnapAftaler = new Button("Aftaler");
        KnapAftaler.setBackground(Color.yellow);
        KnapAftaler2 = new Button("Opd. Aftaler");
        KnapAftaler2.setBackground(Color.yellow);
        KnapJournal = new Button("Patient-Journal");
        KnapJournal.setBackground(Color.red);
        KnapJournal2 = new Button("Opd. Journal");
        KnapJournal2.setBackground(Color.red);
        KnapAndet = new Button("andet");
        KnapAndet.setBackground(Color.ORANGE);
        KnapAndet2 = new Button("Opd. Andet");
        KnapAndet2.setBackground(Color.ORANGE);
        KnapFamilie = new Button("Pårørende");
        KnapFamilie.setBackground(Color.magenta);
        KnapDoktor = new Button("Egen læge");
        KnapDoktor.setBackground(Color.cyan);
        KnapMedicin = new Button("Medicin Cardex");
        KnapMedicin.setBackground(Color.lightGray);
         
       
        SkriveFlade = new TextArea(25,50);
       
        Forfatter = new Label("Flemming Steenstrup Jakobsen");   
       

       
       
        add(CPR);
        add(KnapOKCPR);       
        add(KnapFamilie);
        add(KnapDoktor);
        add(KnapMedicin);
        add(KnapDagplan);
        add(KnapDagplan2);     
        add(KnapAftaler);
        add(KnapAftaler2);
        add(KnapJournal);
        add(KnapJournal2);
        add(KnapAndet);
        add(KnapAndet2);               
        add(Forfatter);
        add(SkriveFlade);
       
        KnapDagplan.addActionListener(this);
        KnapDagplan2.addActionListener(this);
        KnapOKCPR.addActionListener(this);
        KnapFamilie.addActionListener(this);
        KnapAftaler.addActionListener(this);
        KnapAftaler2.addActionListener(this);
        KnapMedicin.addActionListener(this);
        KnapJournal.addActionListener(this);
        KnapAndet.addActionListener(this);
        KnapAndet2.addActionListener(this);
        KnapDoktor.addActionListener(this);
        KnapJournal2.addActionListener(this);
        KnapDagplan2.addActionListener(this);
       
    } 
 
  public void login() {
  MyLogin login = new MyLogin (new Frame(""));
  requestFocus();
  if (login.id) {
    username = login.username.getText();
    password = login.password.getText();
    userValid = validateUser(username , password);
    System.out.println(userValid?"valide":"invalide");
    }
  login.dispose();
  }
 
  private boolean validateUser(String usr, String pwd) {
    // here you will code some logic to validate the username
    // password... for testing purpose :
    //                username = java  password = avaj
    return (usr.equals("java") && pwd.equals("avaj"));
    }

  public void actionPerformed(ActionEvent e)
  {
                 
           
        if (e.getSource() == KnapOKCPR)
       
          { 
              try 
              { 
                  SkriveFlade.setText(data.HentPat());
                 
                 
                }
              catch (Exception fejl2)
              {
                fejl2.printStackTrace();
                SkriveFlade.setText("Fejl i forbindelsen... Prøv senere " + fejl2);
                 
              }
            } 
     
        if (e.getSource() == KnapDagplan)
       
          { 
              try 
              { 
                 
                  SkriveFlade.setText(dag.hentDagplan());
                 
                }
              catch (Exception fejl3)
              {  SkriveFlade.setText("Data ikke tilgængelig " + fejl3); 
                }
            }
           
            if (e.getSource() == KnapDagplan2)
       
          { 
              try 
              { 
                  var1 = (SkriveFlade.getText());
                  dag.gemDagplan(var1);
                 
                }
              catch (Exception fejl3)
              {  SkriveFlade.setText("Data kan ikke gemmes " + fejl3); 
                }
            } 
          if (e.getSource() == KnapFamilie)
          {
              try
                {
                  SkriveFlade.setText(data.HentFam());
                 
                }
             

                  catch (Exception fejl4)
                {
                  SkriveFlade.setText("Fejl i forbindelsen... Prøv senere " + fejl4);
                }
      }
      if (e.getSource() == KnapAftaler)
       
          { 
              try 
              { 
                 
                  SkriveFlade.setText(aft.hentAftaler());
                }
              catch (Exception fejl5)
              {
                  SkriveFlade.setText("Data ikke tilgængelig " + fejl5);
                }
            }
           
            if (e.getSource() == KnapAftaler2)
       
          { 
              try 
              { 
                  var2 = (SkriveFlade.getText());
                  aft.gemAftaler(var2);   
                 
                }
              catch (Exception fejl6)
              {
                  SkriveFlade.setText("Data kan ikke gemmes " + fejl6);
                }
            } 
      if (e.getSource() == KnapMedicin)
       
          { 
              try 
              { 
                  SkriveFlade.setText(data.HentMed());   
                }
              catch (Exception fejl7)
              {
                  SkriveFlade.setText("Fejl i forbindelsen... Prøv senere " + fejl7);
                }
            }
      if (e.getSource() == KnapJournal)
       
          { 
              try 
              { 
                  SkriveFlade.setText(ajour.hentJournal());
                }
              catch (Exception fejl8)
              {
                  SkriveFlade.setText("Data ikke tilgængelig " + fejl8);
                }
        } 
           
            if (e.getSource() == KnapJournal2)
       
          { 
              try 
              { 
                    var3 = (SkriveFlade.getText());
                    ajour.gemJournal(var3);     
                 
                }
              catch (Exception fejl9)
              {
                  SkriveFlade.setText("Data kan ikke gemmes " + fejl9);
                }
        } 
           
      if (e.getSource() == KnapAndet)
       
          { 
              try 
              { 

                  SkriveFlade.setText(and.hentAndet());
                 
                }
              catch (Exception fejl10)
              {  SkriveFlade.setText("Data ikke tilgængelig " + fejl10); 
                }
            }
           
            if (e.getSource() == KnapAndet2)
       
          { 
              try 
              { 
                    var4 = (SkriveFlade.getText());
                    and.gemAndet(var4);   
                   
                 
                }
              catch (Exception fejl11)
              {  SkriveFlade.setText("Data kan ikke gemmes " + fejl11); 
                }
            }
      if (e.getSource() == KnapDoktor)
       
          { 
              try 
              { 
                  SkriveFlade.setText(data.HentDok());
                 
                 
                }
              catch (Exception fejl12)
              {  SkriveFlade.setText("Fejl i forbindelsen... Prøv senere " + fejl12); 
                }
            } 
           

   
}
}

Jeg ønsker samme funktioner på alle dvs. når først cprnr er korrekt kan jeg få adgang til alle andre metoder
Avatar billede arne_v Ekspert
13. juni 2005 - 16:08 #4
jeg har det samme eksempel med flere klasser:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.sql.*;

public class SimpleDBGUI2 extends JFrame implements ActionListener {
    private JButton find;
    private JTextField crit;
    private JTextArea res;
    private DBHandler db;
    public SimpleDBGUI2() {
        getContentPane().setLayout(new BorderLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 400);
        crit = new JTextField();
        getContentPane().add(crit, BorderLayout.NORTH);
        res = new JTextArea();
        getContentPane().add(res, BorderLayout.CENTER);
        find = new JButton("Søg");
        find.addActionListener(this);
        getContentPane().add(find, BorderLayout.SOUTH);
        db = new DBHandler("TestMSAccess", "Admin", "");
    }
    public void actionPerformed(ActionEvent evt) {
      res.setText("");
      ArrayList lst = db.getAll(crit.getText());
      for(int i = 0; i < lst.size(); i++) {
        res.setText(res.getText() + lst.get(i) + "\r\n");
      }
    }
    public static void main(String[] args) {
        SimpleDBGUI2 f = new SimpleDBGUI2();
        f.show();
    }
}

class DBHandler {
  private Connection con;
  private Statement stmt;
  public DBHandler(String dsn, String usr, String pwd) {
      try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        con = DriverManager.getConnection("jdbc:odbc:" + dsn, usr, pwd);
        stmt = con.createStatement();
      } catch (ClassNotFoundException e) {
        e.printStackTrace();
      } catch (SQLException e) {
        e.printStackTrace();
      }
  }
  public ArrayList getAll(String crit) {
      ArrayList res = new ArrayList();
      try {
        ResultSet rs = stmt.executeQuery("SELECT * FROM t1 WHERE f2 LIKE '" + crit + "'");
        while (rs.next()) {
            res.add(new Record(rs.getInt(1), rs.getString(2)));
        }
        rs.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
      return res;
  }
}

class Record {
  private int f1;
  private String f2;
  public Record() {
      f1 = 0;
      f2 = "";
  }
  public Record(int f1, String f2) {
      this.f1 = f1;
      this.f2 = f2;
  }
  public int getF1() {
      return f1;
  }
  public String getF2() {
      return f2;
  }
  public void setF1(int f1) {
      this.f1 = f1;
  }
  public void setF2(String f2) {
      this.f2 = f2;
  }
  public String toString() {
      return (f1 + " " + f2);
  }
}
Avatar billede flimmerdreng Nybegynder
13. juni 2005 - 17:38 #5
OK nu er jeg helt lost. Jeg er nybegynder og du virker ret erfaren, så kan du ikke lave et eksempel ud fra mine klasser. Jeg er ikke helt med på hvad du mener med metoden
public ArrayList getAll(String crit) {
      ArrayList res = new ArrayList();
      try {
        ResultSet rs = stmt.executeQuery("SELECT * FROM t1 WHERE f2 LIKE '" + crit + "'");
        while (rs.next()) {
            res.add(new Record(rs.getInt(1), rs.getString(2)));
        }
        rs.close();
Du opretter en knap res som du sætter til uden tekst. Så laver du en metode kaldet Arraylist getAll som forventer en streng returneret i crit. Så opretter du et array kaldet lst. Din SQL-sætning skal hente alt fra tabel t1 hvor f2 er ligesom crit. Den er jeg absolut ikke med på og getAll i din metode. Hvad betyder det. Den næste sætning forstår jeg slet ikke overhovedet.
Til en anden del
res.setText("");
      ArrayList lst = db.getAll(crit.getText());
      for(int i = 0; i < lst.size(); i++) {
        res.setText(res.getText() + lst.get(i) + "\r\n");
Her sættes tekstfeltet til tomt som før beskrevet
Du sætter lst til det samme som det du henter når du forbinder til databasen altså det som ligger i variablen crit. Så tæller den op i arrayet alt afhængig af størrelsen. Nu kommer endnu en sætning jeg ikke forstår overhovedet. Håber du gider tage dig tid til at kigge på det. Nu er det ikke så sjovt længere. Det driller godt nu.
Avatar billede arne_v Ekspert
15. juni 2005 - 12:24 #6
de 2 eksempler gør præcist det samme

den sidste har bare struktueret tingene i en GUI klasse, en database klasse
og en data klasse

getAll henter som navnet antyder alle records sopm matcher kriteriet
Avatar billede kalp Novice
15. juni 2005 - 12:34 #7
hvis jeg har forstået dig rigtigt...



public String HentPat(String cprnummer) throws SQLException
{       
        ForbindDB(); 
  rs = stmt.executeQuery("select * from patienten where CPRnr = '"+cprnummer+"'");

          while (rs.next())
          {  String cpr = rs.getString("CPRnr"); 
              String pnavn = rs.getString("PatNavn");
              String padresse = rs.getString("PatAdresse");
              int ppostnr = rs.getInt("PatPostnr");
              String pby = rs.getString("PatCity");
              int ptlf = rs.getInt("PatTlfnr");
              a = a+"\n"+cpr+"\n"+pnavn+"\n"+padresse+"\n"+ppostnr+"\n"+ptlf
              +"\n"+pby+"\n"+ptlf;
             
          }
         
         
           
            forb.close();
            return a;     
}
         

du skal ikke erstattet den metode du har i forvejen med denne.. du kan sagtens have begge to i samme klasse.
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 12:44 #8
ok det som du har lavet der kan vel ikke gøre så meget, hvis jeg ikke har sat mit tekstfelt til at "lytte". Hvordan kan jeg gøre det. jeg er faktisk lidt tabt af feltet
Avatar billede kalp Novice
15. juni 2005 - 12:50 #9
lytte? du skriver det skal gøres via. et knaptryk
Avatar billede kalp Novice
15. juni 2005 - 12:51 #10
bliver noget med at når der bliver trykket på en knap så kaldes metoden i database klassen.. altså

String tekst = "";

tekst = Database.HentPat(jTextField1.getText());

nu har du oplysningerne om den person i tekst.
Avatar billede arne_v Ekspert
15. juni 2005 - 12:54 #11
du har sat en ActionListener på din JButton

når brugeren klikker på den JButton så kaldes actionPerformed metoden

actionPerformed metoden henter værdien ud af JTextField og bruger det
værdi til at hente data fra databasen med og vise de værdier i JTextArea (eller
noget mere avanceret)
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 13:16 #12
Den skriver nu ud fra dit eksempel kalp, at HentPat() cannot be applied to java.lang.string. I min forespørgsel skal jeg vel angive noget som du også har skrevet +cprnummer+. Eller er det noget med tekst variablen
Avatar billede kalp Novice
15. juni 2005 - 13:20 #13
som du kan se hedder metoden

public String HentPat(String cprnummer)

og den forventer at der kommer en string med.. den string er indholdet af din jtextfield .. den hvor man indtaster cprnummer:)
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 13:21 #14
undskyld den havde jeg ikke set.
Avatar billede kalp Novice
15. juni 2005 - 13:28 #15
ingen grund til at undskylde:) men kommer fejlen stadig? man kan jo håbe på det var fordi du blot havde kaldt metode for HentPat() uden parametre:))
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 13:29 #16
Nu skriver den når jeg har angivet cprnummer til 1602160234 og den er angivet til tekst i databasen.
java.sql.SQLException: [Microsoft][ODBC Microsoft Access-driver] Datatyperne stemmer ikke overens i kriterieudtrykket.
Er der en forvikling af nogle variabler
Avatar billede arne_v Ekspert
15. juni 2005 - 13:34 #17
den fejl pler at skyldes

tekstfelt = 123

eller

talfelt = 'abc'

i query
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 13:36 #18
ok dvs hvad. at mit tekstfelt er opsat til tal istedet for tekst eller hvordan søren skal det forstås
Avatar billede kalp Novice
15. juni 2005 - 13:38 #19
prøv lige denne


public String HentPat(String cprnummer) throws SQLException
{       

int cpr = cprnummer;
        ForbindDB(); 
  rs = stmt.executeQuery("select * from patienten where CPRnr = "+cpr+"");

          while (rs.next())
          {  String cpr = rs.getString("CPRnr"); 
              String pnavn = rs.getString("PatNavn");
              String padresse = rs.getString("PatAdresse");
              int ppostnr = rs.getInt("PatPostnr");
              String pby = rs.getString("PatCity");
              int ptlf = rs.getInt("PatTlfnr");
              a = a+"\n"+cpr+"\n"+pnavn+"\n"+padresse+"\n"+ppostnr+"\n"+ptlf
              +"\n"+pby+"\n"+ptlf;
             
          }
         
         
           
            forb.close();
            return a;     
}
Avatar billede kalp Novice
15. juni 2005 - 13:38 #20
hov int kan vist ikke tage så store tal hehe
Avatar billede kalp Novice
15. juni 2005 - 13:39 #21
nu angiver vi istedet at den skal læse cprnummer som et tal.. ved at fjerne '' .. hvis altså man kan som i ASP.

public String HentPat(String cprnummer) throws SQLException
{       

        ForbindDB(); 
  rs = stmt.executeQuery("select * from patienten where CPRnr = "+cprnummer+"");

          while (rs.next())
          {  String cpr = rs.getString("CPRnr"); 
              String pnavn = rs.getString("PatNavn");
              String padresse = rs.getString("PatAdresse");
              int ppostnr = rs.getInt("PatPostnr");
              String pby = rs.getString("PatCity");
              int ptlf = rs.getInt("PatTlfnr");
              a = a+"\n"+cpr+"\n"+pnavn+"\n"+padresse+"\n"+ppostnr+"\n"+ptlf
              +"\n"+pby+"\n"+ptlf;
             
          }
         
         
           
            forb.close();
            return a;     
}
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 13:41 #22
med den du lige har lavet. den virker ikke da du ikke har angiver parameteren til cpr og den kan ikke compiles. Skal jeg ændre den også til cpr bare
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 13:43 #23
nu er jeg slet ikke med på det sidste eksempel. Du skriver du vil fjerne " men det har du vist glemt eller hvad mener du
Avatar billede kalp Novice
15. juni 2005 - 13:44 #24
den første jeg lavede..

15/06-2005 13:38:01

vil ikke virke før man lige parser værdien i cprnummer.. altså erstat

int cpr = cprnummer;

med

int cpr = Integer.parseInt(cprnummer);

men tror som sagt ikke det vil virke for tallet 1602160234 er vist for stort til int:)
Avatar billede kalp Novice
15. juni 2005 - 13:44 #25
i det sidste eksempel fjerner jeg 2 stk. af dette tegn '

kom bare til at skrive dem ved siden af hinanden.. så bliver det jo til '' ;)
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 13:45 #26
rs = stmt.executeQuery("select * from patienten where CPRnr = +cprnummer+");
Mener du sådan her
Avatar billede kalp Novice
15. juni 2005 - 13:45 #27
nej bare copy paste mit eksempel:) jeg mener det som jeg skrev det hehe
Avatar billede arne_v Ekspert
15. juni 2005 - 13:45 #28
1602160234 er ike for stor til int

det er kun dem først fra den 22. til den 31. som ikke kan være i en int
Avatar billede kalp Novice
15. juni 2005 - 13:46 #29
men du kan da også prøve din egen selvfølgelige.. hvis den godtager det
Avatar billede kalp Novice
15. juni 2005 - 13:47 #30
okay.. så vil jeg jo ikke forvirrer dig flimmerdreng.... men så prøv dette istedet.. hvis tallet ikke er for stort til at være en int så kan vi lige teste:)

Det er det første eksempel jeg kom med.. bare lige med en lille rettelse.

public String HentPat(String cprnummer) throws SQLException
{       

int cpr = Integer.parseInt(cprnummer);
        ForbindDB(); 
  rs = stmt.executeQuery("select * from patienten where CPRnr = "+cpr+"");

          while (rs.next())
          {  String cpr = rs.getString("CPRnr"); 
              String pnavn = rs.getString("PatNavn");
              String padresse = rs.getString("PatAdresse");
              int ppostnr = rs.getInt("PatPostnr");
              String pby = rs.getString("PatCity");
              int ptlf = rs.getInt("PatTlfnr");
              a = a+"\n"+cpr+"\n"+pnavn+"\n"+padresse+"\n"+ppostnr+"\n"+ptlf
              +"\n"+pby+"\n"+ptlf;
             
          }
         
         
           
            forb.close();
            return a;     
}
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 13:47 #31
vi har slet ikke brugt de tegn i de eksempler du har lavet til kriteriet eller hvordan med det
Avatar billede kalp Novice
15. juni 2005 - 13:48 #32
vi brugte dem her

Kommentar: kalp
15/06-2005 12:34:02

men prøv det jeg skriver i mit indlæg før:)
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 13:53 #33
int cpr = Integer.parseInt(cprnummer);
Nu har jeg brugt dette eksempel men det kommer med den samme med at datatyperne ikke stemmer overens. Andre ideer
Avatar billede kalp Novice
15. juni 2005 - 13:55 #34
sikker på den brokker sig over SQL sætningen?
det er ikke i noget af det her den brokker sig over?

String cpr = rs.getString("CPRnr"); 
              String pnavn = rs.getString("PatNavn");
              String padresse = rs.getString("PatAdresse");
              int ppostnr = rs.getInt("PatPostnr");
              String pby = rs.getString("PatCity");
              int ptlf = rs.getInt("PatTlfnr");
              a = a+"\n"+cpr+"\n"+pnavn+"\n"+padresse+"\n"+ppostnr+"\n"+ptlf
              +"\n"+pby+"\n"+ptlf;

undersøg om datatyperne stemmer overens
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 13:59 #35
jeg trænger til briller. de ligger så tæt op af hinanden så det har jeg faktisk ikke prøvet desuden er der en klat på skærmen hehe. nå men eksemplet fra 12:34 virker så det er jeg ked af at jeg har trukket jer i ørene!!!!! Tusind tak for hjælpen. Lige et sidste spørgsmål. Kan jeg ligge alle metoder ind i en metode dvs. HentPat, HentFam, HentDok, HentMed til feks. HentPatdat. Vil det give probemer med reultset eller createStatement
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 14:00 #36
Det er bare nemmere så man ikke skal indtaste cprnummer ind hver gang man vil søge på en person
Avatar billede kalp Novice
15. juni 2005 - 14:02 #37
du kan ikke ligge metoderne ind i hinanden.. du kan få dem til at kalde hinanden... alle metoderne kan godt ligge i samme klasse
Avatar billede kalp Novice
15. juni 2005 - 14:03 #38
Du kan via. radiobuttons bestemme hvilken af metoderne du vil have skal kaldes når man trykke på din knap i din applet..
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 14:05 #39
ja men mit program fungerer således at der er en knap til hver metode. Nå men det går nok med det.
Avatar billede kalp Novice
15. juni 2005 - 14:06 #40
hvad med at lave radiobuttons og 1 knap?

hvis man vælger radiobutton1 kalde knappen på en metode.. vælger radiobutton2 kalder knappen på en anden metode..

if(radiobutton1.isSelected())
kald denne metode
else if(radiobutton2.isSelected())
kald en anden metode
osv
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 14:12 #41
disse radiobuttons skal jo så ligge i action event som min knap, så når man har trykket det rigtige cprnummer kan man bare markere en RB og så kalde en anden metode. er det så simpelt eller skal der ændres en del mere ved programstrukturen
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 14:13 #42
ja ok nu er jeg med. cprnummeret er stadig indatstet i tekstfeltet så når man markerer en knap og trykker på knappen så kommer de andre oplysninger frem.
Avatar billede kalp Novice
15. juni 2005 - 14:16 #43
du slipper bare for at have en knap for hver metode.. istedet har du en knap og nogle radiobuttons som afgøre hvad knappen skal kalde..

du kan evt. vente med dette til du har fået pusten igen.. kan jo være en slags forbedring engang du ikke ved hvad du skal lave;)
Avatar billede flimmerdreng Nybegynder
15. juni 2005 - 14:27 #44
jo tak og tak for hjælpen
Avatar billede kalp Novice
15. juni 2005 - 14:27 #45
selv tak:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester