В этом уроке я бы хотел вас научить работать с базами данных MySQL, PostgreSQL, Oracle. А именно как подключится и выполнять SQL запросы к базе с помощью java.
Что такое JDBC?
JDBC Driver – (Java DataBase Connectivity — соединение с базами данных на Java) — платформенно-независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД, реализованный в виде пакета java.sql
, входящего в состав Java SE.
Зачем нужен JDBC?
JDBC – позволяет получать доступ к БД, а также выполнять к ней SQL запросы.
Шаг 1.
Скачиваем jar файл JDBC драйвера.
MySQL – http://dev.mysql.com/downloads/connector/j/
PostqreSLQ – http://jdbc.postgresql.org/download.html
Oracle – http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html
Шаг 2.
Подключение к БД Mysql:
Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://hostname:port/dbname","username", "password"); conn.close();
Подключение к БД PostgreSQL:
Class.forName("org.postgresql.Driver"); Connection connection = DriverManager.getConnection("jdbc:postgresql://hostname:port/dbname","username", "password"); connection.close();
Подключение к БД Oracle:
Class.forName("oracle.jdbc.driver.OracleDriver"); Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:mkyong","username","password"); connection.close();
В 1-й строке мы указываем наш JDBC драйвер. Не забудьте добавить его в ClassPath иначе его компилятор его не увидит.
Во 2-й строке JDBC Manager который открывает соединение с базой данных и обеспечит нам дальнейшее обращение к ней.
И последняя строка закрывает соединение с БД.
Желательно строку для определения JDBC поместить в блок try для того чтобы контролировать его наличия в вашем приложении.
try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { System.out.println("Where is your MySQL JDBC Driver?"); e.printStackTrace(); return; }
Шаг 3. Создание таблиц в БД.
Вынесем в отдельный метод соединение с БД.
private static Connection getDBConnection() { Connection dbConnection = null; try { Class.forName(DB_DRIVER); } catch (ClassNotFoundException e) { System.out.println(e.getMessage()); } try { dbConnection = DriverManager.getConnection(DB_CONNECTION, DB_USER,DB_PASSWORD); return dbConnection; } catch (SQLException e) { System.out.println(e.getMessage()); } return dbConnection; }
Этот метод будет создавать в БД таблицу:
private static void createDbUserTable() throws SQLException { Connection dbConnection = null; Statement statement = null; String createTableSQL = "CREATE TABLE DBUSER(" + "USER_ID NUMBER(5) NOT NULL, " + "USERNAME VARCHAR(20) NOT NULL, " + "CREATED_BY VARCHAR(20) NOT NULL, " + "CREATED_DATE DATE NOT NULL, " + "PRIMARY KEY (USER_ID) " + ")"; try { dbConnection = getDBConnection(); statement = dbConnection.createStatement(); // выполнить SQL запрос statement.execute(createTableSQL); System.out.println("Table \"dbuser\" is created!"); } catch (SQLException e) { System.out.println(e.getMessage()); } finally { if (statement != null) { statement.close(); } if (dbConnection != null) { dbConnection.close(); } } }
и в main методе вызываем метод createDbTable() который создаст таблицу в БД.
public static void main(String[] argv) { try { createDbUserTable(); } catch (SQLException e) { System.out.println(e.getMessage()); } }
В результате вы должны получить:
CREATE TABLE DBUSER( USER_ID NUMBER(5) NOT NULL, USERNAME VARCHAR(20) NOT NULL, CREATED_BY VARCHAR(20) NOT NULL, CREATED_DATE DATE NOT NULL, PRIMARY KEY (USER_ID) ) TABLE "user" IS created!
Шаг 4. Добавление новой записи в БД.
String insertTableSQL = "INSERT INTO DBUSER" + "(USER_ID, USERNAME, CREATED_BY, CREATED_DATE) " + "VALUES" + "(1,'mkyong','system', " + "to_date('" + getCurrentTimeStamp() + "', 'yyyy/mm/dd hh24:mi:ss'))";
метод который будет возвращать текущую дату и время:
private static String getCurrentTimeStamp() { Date today = new Date(); return dateFormat.format(today.getTime()); }
И выполняем наш SQL запрос который лежит в переменной insertTableSQL
statement.executeUpdate(insertTableSQL);
Шаг 5. Получение данных с БД.
String selectTableSQL = "SELECT USER_ID, USERNAME from DBUSER";
Выполняем запрос:
try { dbConnection = getDBConnection(); statement = dbConnection.createStatement(); // выбираем данные с БД ResultSet rs = statement.executeQuery(selectTableSQL); // И если что то было получено то цикл while сработает while (rs.next()) { String userid = rs.getString("USER_ID"); String username = rs.getString("USERNAME"); System.out.println("userid : " + userid); System.out.println("username : " + username); } } catch (SQLException e) { System.out.println(e.getMessage()); }
Шаг 6. Удаление данных с БД.
String deleteTableSQL = "DELETE DBUSER WHERE USER_ID = 1";
Выполняем запрос на удаление:
try { dbConnection = getDBConnection(); statement = dbConnection.createStatement(); // выполняем запрос delete SQL statement.execute(deleteTableSQL); System.out.println("Record is deleted from DBUSER table!"); } catch (SQLException e) { System.out.println(e.getMessage()); }
Шаг 7. Обновление данных в БД.
String updateTableSQL = "UPDATE DBUSER SET USERNAME = 'mkyong_new' WHERE USER_ID = 1";
Выполняем запрос на обновление записи:
try { dbConnection = getDBConnection(); statement = dbConnection.createStatement(); // выполняем запрос update SQL statement.execute(updateTableSQL); System.out.println("Record is updated to DBUSER table!"); } catch (SQLException e) { System.out.println(e.getMessage()); }
Выводы.
Все действия с любой базой данных выполняются через SQL запросы, то есть нам достаточно знать SQL для манипуляцией данными в БД.
ПОХОЖИЕ ПУБЛИКАЦИИ
- None Found
29 комментариев к статье "Работа с базами данных с помощью JDBC драйвера"