Avatar billede nielyng Nybegynder
10. december 2002 - 17:40 Der er 3 kommentarer og
1 løsning

mere database....

Flere Props;

I følgende kode har jeg to metoder: findJournal og gemJournal. På mystisk vis forholder det sig sådan, at gem-metoden FORLANGER at databasen db ligger i 'C:\j2sdk1.4.0_03\db.mdb'.

men findJournal bruger databasens "rigtige" plads i rodbiblioteket eg. samme mappe som java-filerne. meget mystisk.. help!

-------------------------------kode-------------------------------


import java.sql.*;
/**
* Indeholder Databasehåndtering og metoder!.
*
* @author (Grüp3)
* @version (a version number or a date)
*/
public class Funktioner
{
    Connection con;
    Statement stm;
    String tabel, find1, find2;
    String keyword, kategori, effekt, fase;

    /**
    * Constructor for objects of class Funktioner
    */
    public Funktioner()
    {
     
     
      indlaesDriver();
      skabForbindelse("db");
      open();
    }

    /**
    * An example of a method - replace this comment with your own
    *
    * @param  y  a sample parameter for a method
    * @return    the sum of x and y
    */
    public void indlaesDriver()
    {
        //indlæs en driver der kan kommunikere med ODBC
        try{
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }catch(ClassNotFoundException e){
        System.err.println("Kunne ikke indlæse driver: "+e.getMessage());
        }
        }
    public void skabForbindelse(String dbUrl) {
        //etabler forbindelse til databasen
        //som skal være defineret som System Data Source Name
        //i ODBC Data Sources og ikke være password-beskyttet
        String user = "", password = "";
        try{
        con = DriverManager.getConnection("jdbc:odbc:"+dbUrl);
        }catch(SQLException e){
        System.err.println(dbUrl+user+password+ "Kunne ikke forbinde til database:" +e.getMessage());
        System.exit(-1);
        }
        System.out.println("Forbindelse til "+ dbUrl +" etableret.");
        }
       
  public void open()
    {
        //åbner et statement der kan udføre SQL
        try{
        stm = con.createStatement();
        }
        catch(SQLException e){
        System.err.println("Kunne ikke etablere Statement: "+e.getMessage());
        }
        System.out.println("Statement oprettet");
        }
        ResultSet hent(String sqlTxt){
        ResultSet rs=null;
        try{
        rs = stm.executeQuery(sqlTxt);
        }
        catch(SQLException e){
        System.err.println("Fejl ved SQL-exeqution: "+e.getMessage());
        }
        return rs;
        }
  public void gemJournal(OpretVindue o){
        //gemmer alt fra textfelter og knapper i opretvindue/JournalVindue)
        OpretVindue opretvindue = o;
       
        if (opretvindue.faseForebyggelseKnap.isSelected()){
        String fase = "Forebyggelse";
        }
        if (opretvindue.faseNedtrapningKnap.isSelected()){
        String fase = "Nedtrapning";
        }
        if (opretvindue.faseOpstartKnap.isSelected()){
        String fase = "Opstart";
        }
        if (opretvindue.KategoriAKnap.isSelected()){
        String kategori = "A";
        }
        if (opretvindue.KategoriBKnap.isSelected()){
        String kategori = "B";
        }
        if (opretvindue.KategoriCKnap.isSelected()){
        String kategori = "C";
        }
        if (opretvindue.BedringKnap.isSelected()){
        String effekt = "Bedring";
        }
        if (opretvindue.IngenBedringKnap.isSelected()){
        String effekt = "Ingen Bedring";
        }
        if (opretvindue.ForværringKnap.isSelected()){
        String effekt = "Forværring";
        }
        //Slut på at teste på knapperne! Her kommer Verdens Længste SQL-sætning.. :-) I alt er der 15 felter der skal opretes..
        String sqlTxt = "Insert into db.Klient" + " Values('"+ opretvindue.loennummerText.getText() + "', '" + opretvindue.navnText.getText() + "', '" + opretvindue.initialText.getText() + "', '" + opretvindue.efternavnText.getText() + "', '" + kategori + "', '" + fase + "', '" + opretvindue.afbudText.getText() + "', '" + opretvindue.afbudAarsag.getText() + "', '" + opretvindue.mangelfremmødeText.getText() + "', '" + opretvindue.fremmoedeAarsag.getText() + "', '" + opretvindue.sygdomshistorieText.getText() + "', '" + opretvindue.AOText.getText() + "', '" + effekt + "', '" + opretvindue.mangelrådText.getText() + "', '" + opretvindue.opfoelgningAarsag.getText() + "', '" + opretvindue.forloebText.getText() +  "')";
        System.out.println(sqlTxt);
        //(Navn, Initial, Efternavn, Kategori, Fase, Afbud, A_aarsag, Fremmoede, F_aarsag, Shistorie, AONR, effekt, Opfoelg, O_aarsag, Forloeb) kan indsættes i sql-sætningen før Values.. men der er ikke lige mange argumenter?!
        //Her skal også være en SQL-sætning, der smider de rigtige ting fra Journalen ind i MDR_DATA!
        try {
        stm.executeUpdate(sqlTxt);
        }
        catch(SQLException e){
        System.err.println("Kunne ikke eksekvere Insert-sql: "+e.getMessage());
        }
       
        }
  public void findJournal(int L_Nummer){
        //åbner et statement der kan udføre SQL
     
        System.out.println("Statement oprettet");
        ResultSet rs=null;
        try{
        String sqlTxt = "Select * from Klient where L_Nummer Like '" + L_Nummer + "'";
        rs = stm.executeQuery(sqlTxt);
        System.out.println("Der blev foretaget en forespørgsel i databasen");
        JournalVindue journalvindue = new JournalVindue(rs);
        journalvindue.setVisible(true);
        }
        catch(SQLException e){
        System.err.println("Fejl ved SQL-exeqution: "+e.getMessage());
        }
        //return rs;
        }
       
     
       
}
Avatar billede olly Nybegynder
10. december 2002 - 17:53 #1
Du har da bare sat den op til at bruge en ODBC kilde så du har vel bare difineret den og så bruger du den? Jeg er ikke med på problemmet!
Avatar billede nielyng Nybegynder
10. december 2002 - 17:57 #2
hehe.. har fundet fejlen:

1.ste sql-stm : insert into db.klient
2.    sql-stmt : insert into klient

see the difference..
Avatar billede olly Nybegynder
10. december 2002 - 19:32 #3
He he...

Husk at svar selv så og tage dine point back :)
Avatar billede nielyng Nybegynder
10. december 2002 - 21:01 #4
jeps.
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