/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package be.djdb.acompany.mysql;
import java.sql.*;
import java.util.ResourceBundle;
import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author noke
*/
public class DataConnect {//TODO maken van logger voor deze functie
//Deze gebruiker is de standaard administrator met alle rechten
private Statement stmt;
private String user;
private String pwx;
//Definiering van de URL van de mysql server op de localhost
private String url ;// hierna komt/database bv /DA
// private <string> iligal argument
private Connection con = null;
private boolean iscon = false;
ResourceBundle resourcelijst;
private DataConnect() {
resourcelijst = ResourceBundle.getBundle("be.djdb.resources.Database_mysql");
user = resourcelijst.getString("db.user") ;//root
pwx = resourcelijst.getString("db.password");//root
// = "jdbc:mysql://localhost:3306";// hierna komt/database bv /DA
url = "jdbc:mysql://"+resourcelijst.getString("db.host")+
":"+resourcelijst.getString("db.port")+
"/"+resourcelijst.getString("db.schema");//
}
//private static final DataConnect instance = new DataConnect();
private static DataConnect dataconnect = null;
public static DataConnect getInstance() {
if (dataconnect == null) {
synchronized (DataConnect.class) {
if (dataconnect == null) {
dataconnect = new DataConnect();
}
}
}
return dataconnect;
}
public Connection getConnection() {
return (this.startcon())? con:null;
}
public boolean isConnection() throws MyDataException {
try {
return con == null || !con.isClosed();
} catch (SQLException ex) {
throw new MyDataException("controle op de connectie is niet gelukt");
}
}
private boolean startcon() {
try {
//TODO thread voor het behouden van de connectie
Class.forName(resourcelijst.getString("db.driver"));
con = DriverManager.getConnection(url, user, pwx);
return true;
} catch (ClassNotFoundException cnfe) {
System.out.println("MySQL driver is not found");
// throw new MyDataException("Database niet bereikbaar");
return false;
} catch (SQLException sqle) {
System.out.println("connection is denied to database");
//throw new MyDataException("Database niet bereikbaar");
return false;
}
}
private void closecon() throws SQLException {
//TODO thread voor het sluiten van de connectie na 10 min niet gebruikt te zijn
con.close();
}
public ResultSet getResultSet(String sql) throws SQLException {
stmt = con.createStatement();
return stmt.executeQuery(sql);
}
@Override
public void finalize() throws SQLException {
this.closecon();
this.con = null;
}
private boolean isvalidsql(String sql) {
//TODO sql validatie en scan op sqlinjectie
return true;
}
//<<<<<<<<<<<<<<<<DEBUG DATABASE>>>>>>>>>>>>>>>
@Deprecated
public void setdebugdata() throws SQLException {
stmt.executeUpdate("INSERT INTO " + "users" + "(login,pasword) " + "VALUES('lieven','roegiers')" + ",('user1','pasword1')");
}
@Deprecated
public void Database_DOWN() throws SQLException {
//maak een Statement object
stmt.execute("DROP DATABASE " + "project_java");
}
@Deprecated
public void Database_UP() throws SQLException {
stmt.executeUpdate("CREATE DATABASE " + "project_java");
}
public void close(ResultSet rs) {
if (rs == null) return;
try {rs.close();
} catch (SQLException e) { //NO EXEPTION SEND
}
}
public void close(Statement s) {
if (s == null) return;
try {s.close();
} catch (SQLException e) {//NO EXEPTION SEND
}
}
public void close(PreparedStatement ps) {
if (ps == null) return;
try {ps.close();
} catch (SQLException e) {//NO EXEPTION SEND
}
}
public void close(CallableStatement cs) {
if (cs == null)return;
try {
cs.close();
} catch (SQLException e) {//NO EXEPTION SEND
}
}
public void close(Connection con) {
if (con == null) return;
try {
if (!con.isClosed()) con.close();
} catch (SQLException e) {//NO EXEPTION SEND
}
}
}
LET OP dit is geen optie om live te gebruiken dit is enkel om sneller op weg te komen (niet veilig genoeg)