package com.neumino.pdftounusualhtml;
import java.sql.*;
public class Jdbc {
private final String url;
private final String driver;
private final String username;
private final String password;
private Statement statement;
private Connection con;
public Jdbc(String url, String driver, String username, String password) {
this.url = url;
this.driver = driver;
this.username = username;
this.password = password;
}
//TODO
//Don't throw error, catch them earlier
public void connect() throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {
Class.forName("com.mysql.jdbc.Driver").newInstance ();
con = DriverManager.getConnection (url, username, password);
}
public void disconnect() throws SQLException {
con.close();
}
public int insert(String query) {
int key = -1;
PreparedStatement preparedStatement;
try {
preparedStatement = con.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
preparedStatement.executeUpdate();
ResultSet keys = preparedStatement.getGeneratedKeys();
keys.next();
key = keys.getInt(1);
keys.close();
preparedStatement.close();
} catch (SQLException e) {
System.err.println(e.toString() );
e.printStackTrace();
try {
Class.forName("com.mysql.jdbc.Driver").newInstance ();
con = DriverManager.getConnection (url, username, password);
preparedStatement = con.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
preparedStatement.executeUpdate();
ResultSet keys = preparedStatement.getGeneratedKeys();
keys.next();
key = keys.getInt(1);
keys.close();
preparedStatement.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
System.exit(2);
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
System.exit(2);
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
System.exit(2);
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
System.exit(2);
}
}
return key;
}
public boolean createTransaction() throws SQLException {
statement = con.createStatement();
if(con.getMetaData().supportsBatchUpdates()){
con.setAutoCommit(false);
statement.clearBatch();
return true;
}
else {
return false;
}
}
public void addQuery(String query) throws SQLException {
statement.addBatch(query);
}
public void executeTransaction() throws SQLException {
int[] resultat = statement.executeBatch();
con.commit();
con.setAutoCommit(false);
statement.close();
}
public ResultSet simpleSelect(String query) throws SQLException {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
return rs;
}
}