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;
}
