rambokayambo
rambokayambo

Reputation: 341

Create a class to connect to any database using jdbc

I am trying to design a Java swing application. I want to experiment and use an MVC type of architecture whereby my UI is separated from the actual logic to access data and connect to a database. I have decided that I need to create a custom class that contains all the logic to connect to the database and then simply call methods from this class in my action event for any particular form and button. This way I can switch databases and all I need to do (if I have a large code base with many many forms) is change the JDBC connection string to connect to oracle instead of MySQL. So far I have the code to connect to a database but I am trying to figure out how I can make this a class.

try
     {
         Class.forName("com.mysql.jdbc.Driver");
         Connection con=(Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/prototypeeop","root","triala");
         Statement stmt=con.createStatement();
         ResultSet rs=stmt.executeQuery(sql);

I will then return the result set from a member function of my connection class to process and display on the screen.

Upvotes: 4

Views: 73031

Answers (4)

nabster
nabster

Reputation: 1665

You can either use fancier stuff like Hibernate or if your database usage is simple then you can try Commons DbUtils

Ceremonial connection code

String db = "jdbc:h2:mem:;INIT=runscript from 'classpath:/prototypeeop.sql'"; 
//for H2 in-memory database:
Connection DriverManager.getConnection(db);

Remember the core classes and interfaces in Commons DbUtils are QueryRunner and ResultSetHandler.

Upvotes: 0

kapandron
kapandron

Reputation: 3671

Just create a separate class and delegate to him a getting of connection to database:

public class ConnectionManager {
    private static String url = "jdbc:mysql://localhost:3306/prototypeeop";    
    private static String driverName = "com.mysql.jdbc.Driver";   
    private static String username = "root";   
    private static String password = "triala";
    private static Connection con;
    private static String urlstring;

    public static Connection getConnection() {
        try {
            Class.forName(driverName);
            try {
                con = DriverManager.getConnection(urlstring, username, password);
            } catch (SQLException ex) {
                // log an exception. fro example:
                System.out.println("Failed to create the database connection."); 
            }
        } catch (ClassNotFoundException ex) {
            // log an exception. for example:
            System.out.println("Driver not found."); 
        }
        return con;
    }
}

Then get the connection in a code as follows:

private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;

con = ConnectionManager.getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(sql);

Upvotes: 23

user3029620
user3029620

Reputation: 1527

Two ways you can make it

  1. Override determineCurrentLookupKey() method of Spring's AbstractRoutingDataSource class.

  2. You can create a class which will return Connection based on system.

Upvotes: 0

S1LENT WARRIOR
S1LENT WARRIOR

Reputation: 12204

You can try MySQL JDBC Utilities API for MySQL connectivity.

This API offers very cool features and also fulfill your requirement!

Upvotes: 0

Related Questions