Avatar billede kews Nybegynder
15. maj 2002 - 16:19 Der er 3 kommentarer og
1 løsning

Hvordan sender jeg dette objekt over i DBFacade ???

Jeg har et Kunde objekt, som jeg gerne vil have sendt over til min database forbindelse, hvordan undgår jeg at compileren brokker sig :

java:43: non-static method findForbindelse() cannot be referenced from a static context
        DBFacade.findForbindelse();

Følgende er source-koder :

import java.sql.*;

public class DBConnection
{
    //Reference til DBConnection selv, så det sikres at
    //der kun findes én 
    private static DBConnection forbindelse;
    public static Connection dbc;
    private static boolean forbindelsenErLedig = true;
   
   
    //Konstruktøren gemmes, således at modellen bliver en Singleton 
    //og metoden getDBConnection er den eneste måde at tilgå
    //databasen på       
    private DBConnection() {}
 
      public static DBConnection getConnection()
    {   
        if(forbindelsenErLedig)
        {
            if (forbindelse == null)
            {
                forbindelse = new DBConnection();
                System.out.println("Jeg er klar");
               
            }
            forbindelsenErLedig = false;
        }
       
        else
        {
            System.out.println("Forbindelse optaget");
        }
       
        return forbindelse;
    }
   
    public Connection opretConnection()
    {
            //JDBC-forbindelsen til JDBC-ODBC broen oprettes
            try       
            {   
                Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
            }
       
            catch (ClassNotFoundException cnfe)
            {
                System.out.println(cnfe);
            }
   
            //Ovenstående database-driver benyttes til at knytte forbindelsen til MS-ACCESS basen
   
            try
            {
               
                dbc = DriverManager.getConnection("jdbc:odbc:OptikSysDatabase");
           
            }
   
            catch (SQLException sqle)
            {
                System.out.println(sqle);
            }
   
            return dbc;
    }
   
 
}

import java.sql.*;

public class DBFacade
{
    boolean forbindelseOprettet = false;
    DBConnection forbindelse;
    Connection dbc;
    public DBFacade()
    {
        System.out.println("Klar til oprette en forbindelse");
        opretDatabaseForbindelse();
        findForbindelse();
    }
   
    public DBConnection opretDatabaseForbindelse()
    {
        forbindelse = DBConnection.getConnection();
        return forbindelse;
    }
   
    public Connection findForbindelse()
    {
        dbc = DBConnection.opretConnection();
        return dbc;
    }
       
    //SQL metoder
    public void opretKunde(Kunde nyKunde)            //skal modtage object
    {
        int kundenr  = 0;
        int postnr  = 0;
        int tlfnr    = 0;
        String fnavn = "";
        String enavn = "";
        String gade  = "";
        String husnr = "";
       
            try
            {
                Statement statement = dbc.createStatement();
               
                kundenr = getMaxId() + 1;
                postnr     = nyKunde.getPostnr();
                tlfnr     = nyKunde.getTlf();
                fnavn     = nyKunde.getFornavn();
                enavn     = nyKunde.getEfternavn();
                gade     = nyKunde.getGade();
                husnr     = nyKunde.getHusnr();
               
                String insertKunde = "INSERT INTO KUNDE ( kundenr, fornavn, efternavn, gade, husnr, postnr) VALUES ("+kundenr+", '"+fnavn+"', '"+enavn+"','"+gade+"','"+husnr+"',"+postnr+");";
                String insertTlf = "INSERT INTO tlf VALUES ("+tlfnr+","+kundenr+");";
       
                statement.executeUpdate(insertKunde);
                statement.executeUpdate(insertTlf);
                statement.close();
            }
           
            catch (SQLException sqle)
            {
            }
    }
   
    public void sletKunde(int i)            //skal modtage kundenr
    {
       
        try
        {
            Statement deleteStmt = dbc.createStatement();
           
            String sletKunde = "DELETE * FROM kunde WHERE kundenr="+i+";";
           
            deleteStmt.executeUpdate(sletKunde);
            deleteStmt.close();       
        }
       
        catch (SQLException sqle)
        {
        }
           
    }
   
    public ResultSet visMedlem(int i)    throws SQLException        //ind parameter telefonnr, ud resultset
    {
       
       

        String SQLvis = "SELECT kunde.kundenr, fornavn, efternavn, gade, husnr, kunde.postnr, postby.by, tlfnr, fødselsdag"
                        + "FROM kunde, postby, tlf"
                      + "WHERE kunde.postnr=postby.postnr And kunde.kundenr=tlf.kundenr"
                      + "AND tlf.tlfnr = "+i+";";
                 
        Statement stmt = dbc.createStatement();
        ResultSet rs = stmt.executeQuery(SQLvis);
        stmt.close();
        return rs;
    }
   
       
    public ResultSet synsPrøveRes(int i) throws SQLException
    {
       
        String sql = "SELECT dato, højre, venstre FROM synsprøve WHERE synsprøvenr = "+i+";";
        Statement stmt = dbc.createStatement();
        ResultSet rs = stmt.executeQuery(sql);
        stmt.close();
        return rs;
    }

   
    //int i = synsprøvenr!
    //ordre laves om til arraylist??

/*    public void nyOrdre(int i, Ordre nyOrdre)        //skal modtage ordre object
    {
       
        int ordrenr            = 0;
        int synsprøvenr     = i;
        String dato          = "";
        String antal         = "";
        String pris            = "";
        String varenr         = "";
        String vare         = "";
       
   
        try
        {
            Statement stmt = dbc.createStatement();
           
   
            dato         = nyOrdre.getDato();            //hvad er dato??
            varenr         = nyOrdre.getVarenr();
            vare         = nyOrdre.getVare();
            antal         = nyOrdre.getAntal();
            pris        = nyOrdre.getPris();
           
            Integer.parseInt(antal);            //skal ligges i util klasse
            Double.parseDouble(pris);            //skal ligges i util klasse
            ordrenr = getMaxOrdre();
           
           
            String insertOrdre = "INSERT INTO KUNDE (ordrenr, synsprøvenr, dato)"
                              + "VALUES ( "+ordrenr+", "+synsprøvenr+", #"+dato+"#);";
           
            String insertVareordre = "INSERT INTO VAREORDRE (ordrenr, varenr, vare, antal, pris) VALUES ("+ordrenr+", '"+varenr+"','"+vare+"',"+antal+", "+pris+");";
   
            stmt.executeUpdate(insertOrdre);
            stmt.executeUpdate(insertVareordre);
            stmt.close();       
        }
       
        catch (SQLException sqle)
        {
       
        }
       
    }*/
   
    //i = kundenr, j = synsprøvenr

    public ResultSet visOrdre(int i, int j) throws SQLException
    {
       
        String sql = "SELECT kunde.kundenr, kunde.fornavn, kunde.efternavn, kunde.gade, kunde.husnr,"
                  + "kunde.postnr, kunde.fødselsdag, synsprøve.synsprøvenr, ordre.ordrenr, ordre.dato,"
                  + "FROM kunde, synsprøve, ordre"
                  + "WHERE kunde.kundenr="+i+""
                  + "AND ordre.ordrenr=vareordre.ordrenr"
                  + "AND kunde.kundenr=synsprøve.kundenr"
                  + "AND synsprøve.synsprøvenr=ordre.synsprøvenr"
                  + "AND ordre.synsprøvenr = "+j+";";
       
        Statement stmt = dbc.createStatement();
        ResultSet rs = stmt.executeQuery(sql);
        stmt.close();
        return rs;
    }
   
    // i = ordrenr
    public ResultSet visVareOrdre(int i) throws SQLException
    {
        String sql = "SELECT vareordre.varenr, vareordre.vare, vareordre.antal, vareordre.pris"
                  + "FROM vareordre"   
                  + "WHERE vareordre.ordrenr = "+i+";";
        Statement stmt = dbc.createStatement();
        ResultSet rs = stmt.executeQuery(sql);
        stmt.close();
        return rs;
    }
   
    //SQL hjælpemetoder
    public int getMaxId() throws SQLException
    {
        String sql = "SELECT Max (kundenr) AS maxid FROM kunde;";
        Statement stmt = dbc.createStatement();
        ResultSet rs = stmt.executeQuery(sql);
        rs.next();
        int max = rs.getInt("maxid");
        stmt.close();
        return max;
    }
   
    public int getMaxOrdre() throws SQLException
    {
        String sql = "SELECT Max (ordrenr) AS maxordre FROM ordre;";
        Statement stmt = dbc.createStatement();
        ResultSet rs = stmt.executeQuery(sql);
        rs.next();
        int max = rs.getInt("maxordre");
        stmt.close();
        return max;
    }
   
    //metode der finder sidste synsprøve fra kunde
    public int maxSynsprøveOnKunde(int i) throws SQLException  //skal modtage kundenr
    {
       
        String sql = "SELECT Max (synsprøvenr) AS maxid FROM kunde WHERE kundenr = "+i+";";
        Statement stmt = dbc.createStatement();
        ResultSet rs = stmt.executeQuery(sql);
        rs.next();
        int max = rs.getInt("maxid");
        stmt.close();
        return max;
    }
   

}

import java.lang.Object;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.Action;
import javax.swing.AbstractAction;
import java.sql.*;
import java.lang.*;
import java.util.*;

public class opretKundeFrameController implements ActionListener
{
   
    public opretKundeFrameController(opretKundeFrame okf)
    {
        this.okf = okf;
    }
   
        public void actionPerformed(ActionEvent e)
        {
       
        int nytKundenr = 0;
       
        nytKundenr    = Integer.parseInt(okf.kundenr.getText());
        fornavn    = okf.fornavn.getText();
        efternavn  = okf.efternavn.getText();
        gade        = okf.gade.getText();
        husnr      = okf.husnr.getText();
        postnr      = Integer.parseInt(okf.postnr.getText());
        tlf        = Integer.parseInt(okf.tlf.getText());
        //String indsaetFoedselsdag = foedselsdag.getText();
       
        Kunde indsaetKunde = new Kunde(kundenr, fornavn, efternavn, gade, husnr, postnr, tlf);
       
        System.out.println("Kunde-objekt oprettet");
       
        DBFacade.opretKunde(indsaetKunde);
       
    }
   
    private opretKundeFrame okf;   
    private int kundenr;
    private String fornavn;
    private String efternavn;
    private String gade;
    private String husnr;
    private int postnr;
    private int tlf;
}
Avatar billede johnstigers Seniormester
15. maj 2002 - 16:24 #1
kews - luk det ene af dine spørhgsmål - man må kun oprette det een gang - du har til midnat - så sletter jeg det her og du mister dine point.

john_stigers - coadmin
Avatar billede kews Nybegynder
15. maj 2002 - 16:56 #2
OK, min fejl, men hvordan lukker jeg det ene spørgsmål ned ???
Avatar billede el_gnu Nybegynder
15. maj 2002 - 17:08 #3
du lægger bare et svar selv som du såå accepterer
Avatar billede kews Nybegynder
15. maj 2002 - 19:20 #4
ok
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