Advertisement
Guest User

databaseEngine (UCanAccess)

a guest
Mar 30th, 2014
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.83 KB | None | 0 0
  1. package database;
  2.  
  3. import com.healthmarketscience.jackcess.Database;
  4. import com.healthmarketscience.jackcess.Database.FileFormat;
  5. import com.healthmarketscience.jackcess.DatabaseBuilder;
  6. import java.io.File;
  7. import java.io.IOException;
  8. import java.sql.Connection;
  9. import java.sql.DatabaseMetaData;
  10. import java.sql.DriverManager;
  11. import java.sql.PreparedStatement;
  12. import java.sql.ResultSet;
  13. import java.sql.SQLException;
  14. import java.sql.Statement;
  15. import java.util.logging.Level;
  16. import java.util.logging.Logger;
  17. import net.ucanaccess.jdbc.DBReference;
  18. import net.ucanaccess.jdbc.JackcessOpenerInterface;
  19. import net.ucanaccess.jdbc.Session;
  20. import net.ucanaccess.jdbc.UcanaccessConnection;
  21. import net.ucanaccess.jdbc.UcanaccessPreparedStatement;
  22. import net.ucanaccess.jdbc.UcanaccessResultSet;
  23. import sports.day.results.Preferences;
  24.  
  25.  
  26. public class databaseEngine {
  27.  
  28.     UcanaccessConnection uCon;
  29.     Connection con;
  30.     Statement stmt;
  31.     ResultSet rs;
  32.     UcanaccessResultSet urs;
  33.  
  34.     public void connect(String dbFile, String pass) {
  35.         String url;
  36.         DBReference dbref = null;
  37.         FileFormat ff;
  38.         JackcessOpenerInterface jko = new Opener();
  39.         Session sn = new Session();
  40.         try {
  41.             Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
  42.         } catch (ClassNotFoundException ex) {
  43.             Logger.getLogger(databaseEngine.class.getName()).log(Level.SEVERE, null, ex);
  44.         }
  45.         url = "jdbc:ucanaccess://" + dbFile;
  46.         ff = FileFormat.V2010;
  47.         sn.setUser("");
  48.         sn.setPassword(pass);
  49.         try {
  50.             dbref = new DBReference(getDbFile(dbFile), ff, jko, "");
  51.         } catch (IOException | SQLException ex) {
  52.             Logger.getLogger(databaseEngine.class.getName()).log(Level.SEVERE, null, ex);
  53.         }
  54.         try {
  55.             con = DriverManager.getConnection(url, "", pass);
  56.             uCon = new UcanaccessConnection(dbref, con.getClientInfo(), sn);
  57.             stmt = uCon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
  58.         } catch (SQLException err) {
  59.             System.out.println(err.getMessage());
  60.         }
  61.     }
  62.  
  63.     public class Opener implements JackcessOpenerInterface {
  64.         public Database open(File fl, String pwd) throws IOException {
  65.             DatabaseBuilder dbd = new DatabaseBuilder(fl);
  66.             dbd.setAutoSync(true);
  67.             //only for encrypted mdb: dbd.setCodecProvider(new CryptCodecProvider(pwd));
  68.             dbd.setReadOnly(false);
  69.             return dbd.open();
  70.         }
  71.     }
  72.  
  73.     public ResultSet getTableMetaData(String table) {
  74.         Preferences pref = new Preferences();
  75.         connect(pref.getPreference("dbFileName"), pref.getPreference("dbPassword"));
  76.         try {
  77.             DatabaseMetaData meta = con.getMetaData();
  78.             rs = meta.getTables(null, null, table, null);
  79.         } catch (SQLException ex) {
  80.             Logger.getLogger(databaseEngine.class.getName()).log(Level.SEVERE, null, ex);
  81.         }
  82.         return rs;
  83.     }
  84.  
  85.     public UcanaccessPreparedStatement prepareStatement(String sql) {
  86.         Preferences pref = new Preferences();
  87.         connect(pref.getPreference("dbFileName"), pref.getPreference("dbPassword"));
  88.         PreparedStatement pstmnt;
  89.         UcanaccessPreparedStatement stmnt;
  90.         try {
  91.             pstmnt = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
  92.             stmnt = new UcanaccessPreparedStatement(pstmnt, uCon);
  93.             return stmnt;
  94.         } catch (SQLException ex) {
  95.             Logger.getLogger(databaseEngine.class.getName()).log(Level.SEVERE, null, ex);
  96.         }
  97.         closeConnection();
  98.         return null;
  99.     }
  100.  
  101.     public void updateDatabase(UcanaccessPreparedStatement stmnt) {
  102.         try {
  103.             stmnt.executeUpdate();
  104.         } catch (SQLException ex) {
  105.             Logger.getLogger(databaseEngine.class.getName()).log(Level.SEVERE, null, ex);
  106.         }
  107.     }
  108.  
  109.     public UcanaccessResultSet fetchResults(UcanaccessPreparedStatement stmnt) {
  110.         try {
  111.             rs = stmnt.executeQuery();
  112.             urs = new UcanaccessResultSet(rs, stmnt);
  113.         } catch (SQLException ex) {
  114.             Logger.getLogger(databaseEngine.class.getName()).log(Level.SEVERE, null, ex);
  115.         }
  116.         return urs;
  117.     }
  118.  
  119.     public boolean testConnection(String filename, String pass) {
  120.         connect(filename, pass);
  121.         PreparedStatement pstmnt;
  122.         UcanaccessPreparedStatement stmnt;
  123.         try {
  124.             pstmnt = con.prepareStatement("SELECT * FROM events", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
  125.             stmnt = new UcanaccessPreparedStatement(pstmnt, uCon);
  126.             rs = stmnt.executeQuery();
  127.             urs = new UcanaccessResultSet(rs, stmnt);
  128.         } catch (SQLException err) {
  129.             System.out.println(err.getMessage());
  130.             closeConnection();
  131.             return false;
  132.         }
  133.         closeConnection();
  134.         return true;
  135.     }
  136.  
  137.     public boolean exists(String filePath) {
  138.         return new File(filePath).exists();
  139.     }
  140.  
  141.     public String getDbFilePath(String fileName) {
  142.         File f = new File(fileName);
  143.         String dbFilePath = (f.getAbsolutePath().substring(0, (int) (f.getAbsolutePath().length()) - 20).concat("Database/sportsdayData.accdb"));
  144.         return dbFilePath;
  145.     }
  146.  
  147.     public File getDbFile(String fileName) {
  148.         File f = new File(fileName);
  149.         return f;
  150.     }
  151.  
  152.     public void closeConnection() {
  153.         try {
  154.             uCon.close();
  155.             stmt.close();
  156.             con.close();
  157.             rs.close();
  158.             urs.close();
  159.         } catch (SQLException ex) {
  160.             Logger.getLogger(databaseEngine.class.getName()).log(Level.SEVERE, null, ex);
  161.         }
  162.     }
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement