Java uses the JDBC library to connect and manupilate databases. JDBC works with Java on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX.
First, you need a connection. To create a connection, you need the username, password, and host for the database you want to connect to. Here I have a Enum to create a connection factory.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public enum DBConnection { INSTANCE("java_jdbc"); private Connection connection = null; private String database; private DBConnection(String database) { this.database = database; String URL = "jdbc:mysql://localhost:3306/" + database + "?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC"; String USER = "root"; String PASS = ""; try { connection = DriverManager.getConnection(URL, USER, PASS); } catch (SQLException e) { System.out.println("SQLException, msg=" + e.getLocalizedMessage()); e.printStackTrace(); } } public Connection getConnection() { return connection; } public String getDatabase() { return this.database; } }
Create a table
public static void createTable() { System.out.println("creating " + TABLE_NAME + " table..."); DB_CONNECTION = DBConnection.INSTANCE.getConnection(); Statement stmt = null; try { stmt = DB_CONNECTION.createStatement(); } catch (SQLException e) { System.out.println("SQLException, msg=" + e.getLocalizedMessage()); e.printStackTrace(); } System.out.println("Check if table " + TABLE_NAME + " already exists."); // @formatter:off String checkTableSQL = "SELECT COUNT(*) as tableCount " + "FROM INFORMATION_SCHEMA.TABLES " + "WHERE TABLE_SCHEMA = '"+DBConnection.INSTANCE.getDatabase()+"' "+ "AND TABLE_NAME = '"+TABLE_NAME+"'; "; // @formatter:on try { System.out.println("SQL QUERY: " + checkTableSQL); ResultSet resultSet = stmt.executeQuery(checkTableSQL); resultSet.next(); int tableCount = resultSet.getInt("tableCount"); if (tableCount > 0) { System.out.println("dropping " + TABLE_NAME + " table."); System.out.println("SQL QUERY: " + "DROP TABLE " + TABLE_NAME + "; "); boolean removedTable = stmt.execute("DROP TABLE " + TABLE_NAME + "; "); System.out.println("table dropped " + removedTable); } } catch (SQLException e) { System.out.println("SQLException, msg=" + e.getLocalizedMessage()); e.printStackTrace(); } System.out.println("creating " + TABLE_NAME + " table."); // @formatter:off String createTableSQL = "CREATE TABLE "+TABLE_NAME+" " + "(id INTEGER NOT NULL AUTO_INCREMENT, " + " first_name VARCHAR(255), " + " last_name VARCHAR(255), " + " age INTEGER, " + " PRIMARY KEY ( id )); "; // @formatter:on try { System.out.println("SQL QUERY: " + createTableSQL); stmt.executeUpdate(createTableSQL); } catch (SQLException e) { System.out.println("SQLException, msg=" + e.getLocalizedMessage()); e.printStackTrace(); } System.out.println(TABLE_NAME + " table has been created!\n\n"); }
public static void insertDataToTable() { System.out.println("inserting data into " + TABLE_NAME + " table..."); DB_CONNECTION = DBConnection.INSTANCE.getConnection(); try { DB_CONNECTION.setAutoCommit(false); } catch (SQLException e) { System.out.println("SQLException, msg=" + e.getLocalizedMessage()); e.printStackTrace(); } // load users try { for (int i = 0; i < NUMBER_OF_USERS; i++) { StringBuilder query = new StringBuilder(); query.append("INSERT INTO user (first_name, last_name, age) "); query.append("VALUES (?, ?, ?); "); System.out.println("SQL QUERY: " + query.toString()); /** * Use prepareStatement to insert data into the query and avoid SQL injection */ PreparedStatement pStmnt = DB_CONNECTION.prepareStatement(query.toString(), Statement.RETURN_GENERATED_KEYS); String firstName = ConstantUtils.getRandomFirstname(); String lastName = ConstantUtils.getRandomLastname(); int age = RandomGeneratorUtils.getIntegerWithin(1, 51); pStmnt.setString(1, firstName); pStmnt.setString(2, lastName); pStmnt.setInt(3, age); System.out.println("parameter 1: " + firstName); System.out.println("parameter 2: " + lastName); System.out.println("parameter 3: " + age); int numOfRowsCreated = pStmnt.executeUpdate(); if (numOfRowsCreated > 0) { int id = 0; ResultSet rs = pStmnt.getGeneratedKeys(); if (rs.next()) { id = rs.getInt(1); } System.out.println("new id: " + id); } } DB_CONNECTION.commit(); } catch (SQLException e) { System.out.println("SQLException, msg=" + e.getLocalizedMessage()); e.printStackTrace(); try { DB_CONNECTION.rollback(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } finally { } System.out.println(TABLE_NAME + " table has been populated with " + NUMBER_OF_USERS + " rows!\n\n"); }
public static void readDataFromTable(int selectedId) { System.out.println("reading data from " + TABLE_NAME + " table..."); DB_CONNECTION = DBConnection.INSTANCE.getConnection(); try { DB_CONNECTION.setAutoCommit(false); } catch (SQLException e) { System.out.println("SQLException, msg=" + e.getLocalizedMessage()); e.printStackTrace(); } ResultSet rs = null; PreparedStatement pStmnt = null; // Read user try { StringBuilder query = new StringBuilder(); query.append("SELECT id, first_name, last_name, age "); query.append("FROM user "); query.append("WHERE id = ? "); System.out.println("SQL QUERY: " + query.toString()); pStmnt = DB_CONNECTION.prepareStatement(query.toString()); pStmnt.setInt(1, selectedId); System.out.println("parameter 1: " + selectedId); rs = pStmnt.executeQuery(); DB_CONNECTION.commit(); rs.next(); User user = User.generateUserFromResultset(rs); System.out.println(user.toString()); } catch (SQLException e) { System.out.println("SQLException, msg=" + e.getLocalizedMessage()); e.printStackTrace(); } finally { try { if (rs != null) { rs.close(); } if (pStmnt != null) { pStmnt.close(); } } catch (SQLException e) { System.out.println(e.getMessage()); } } System.out.println("Row with id=" + selectedId + " has been retrived from " + TABLE_NAME + ".\n\n"); }
public static void updateDataInTable(int selectedId) { System.out.println("updating data in " + TABLE_NAME + " table..."); DB_CONNECTION = DBConnection.INSTANCE.getConnection(); try { DB_CONNECTION.setAutoCommit(false); } catch (SQLException e) { System.out.println("SQLException, msg=" + e.getLocalizedMessage()); e.printStackTrace(); } // Update user try { StringBuilder query = new StringBuilder(); query.append("UPDATE user "); query.append("SET first_name = ? "); query.append(", age = ? "); query.append("WHERE id = ? "); System.out.println("SQL QUERY: " + query.toString()); PreparedStatement pStmnt = DB_CONNECTION.prepareStatement(query.toString()); int age = RandomGeneratorUtils.getIntegerWithin(1, 51); String firstName = "Folau"; pStmnt.setString(1, firstName); pStmnt.setInt(2, age); pStmnt.setInt(3, selectedId); System.out.println("parameter 1: " + firstName); System.out.println("parameter 2: " + age); System.out.println("parameter 3: " + selectedId); pStmnt.executeUpdate(); DB_CONNECTION.commit(); } catch (SQLException e) { System.out.println("SQLException, msg=" + e.getLocalizedMessage()); e.printStackTrace(); try { DB_CONNECTION.rollback(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } System.out.println(TABLE_NAME + " table has been updated for row with id=" + selectedId + "!\n\n"); }
DB_CONNECTION.setAutoCommit(false);
DB_CONNECTION.commit();
DB_CONNECTION.rollback();
public static void updateDataInTable(int selectedId) { System.out.println("updating data in " + TABLE_NAME + " table..."); DB_CONNECTION = DBConnection.INSTANCE.getConnection(); try { DB_CONNECTION.setAutoCommit(false); } catch (SQLException e) { System.out.println("SQLException, msg=" + e.getLocalizedMessage()); e.printStackTrace(); } // Update user try { StringBuilder query = new StringBuilder(); query.append("UPDATE user "); query.append("SET first_name = ? "); query.append(", age = ? "); query.append("WHERE id = ? "); System.out.println("SQL QUERY: " + query.toString()); PreparedStatement pStmnt = DB_CONNECTION.prepareStatement(query.toString()); int age = RandomGeneratorUtils.getIntegerWithin(1, 51); String firstName = "Folau"; pStmnt.setString(1, firstName); pStmnt.setInt(2, age); pStmnt.setInt(3, selectedId); System.out.println("parameter 1: " + firstName); System.out.println("parameter 2: " + age); System.out.println("parameter 3: " + selectedId); pStmnt.executeUpdate(); DB_CONNECTION.commit(); } catch (SQLException e) { System.out.println("SQLException, msg=" + e.getLocalizedMessage()); e.printStackTrace(); try { DB_CONNECTION.rollback(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } System.out.println(TABLE_NAME + " table has been updated for row with id=" + selectedId + "!\n\n"); }