Соединение с базой данных MySQL в Java

СУБД MySQL предоставляет приложениям Java возможность соединения с базой данных при помощи драйвера MySQL Connector, который реализует интерфейс API Java Database Connectivity (JDBC). Этот API является независимым от СУБД стандартом связи языка программирования Java с широким спектром баз данных, электронных таблиц и т.п.

API JDBC позволяет осуществлять следующие операции:

  • Устанавливать соединение с базой данных;
  • Выполнять SQL запросы;
  • Обрабатывать результаты, полученные из базы данных.

Далее мы узнаем, как установить и настроить MySQL Connector/J (драйвер JDBC), а также используем его при создании приложения.

Версии MySQL Connector/J:

Версия Connector/J Версия JDBC Версия MySQL сервера Статус
5.1 3.0, 4.0 4.1, 5.0, 5.1, 5.5, 5.6, 5.7 Рекомендуемая версия
5.0 3.0 4.1, 5.0 Выпущенная версия
3.1 3.0 4.1, 5.0 Устаревшая
3.0 3.0 3.x, 4.1 Устаревшая

Загрузка Connector/J :

MySQL Connector J — это официальный драйвер JDBC для MySQL. Вы можете загрузить последнюю версию драйвера отсюда. Выберите одну из кроссплатформенных версий:

Или версию для Microsoft Windows:

Установка

Вы можете установить пакет драйверов Connector/J, используя либо бинарный установочный файл, либо исходный код. Метод с установочным файлом прост, поскольку он представляет собой набор библиотек и прочих скомпилированных файлов.

Метод с использованием исходного кода пригодится, если вы хотите настроить или изменить процесс установки. Помимо этого нужно будет вручную добавить путь к Connector/J в  переменную Java classpath.

MySQL Connector/J поставляется как архив .zip или .tar.gz, содержащий файлы исходных классов. После распаковки архива установите драйвер, поместив MySQL-connector-java-version-bin.jar в ваш classpath. Для этого добавьте полный путь к нему в переменную окружения classpath или укажите его в параметре -cp при старте JVM.

Переменную окружения classpath можно установить в системах Unix, Linux или Mac OS X локально для пользователя в его файле .profile, .login или ином login-файле. Или же установить её, изменив глобальный файл /etc/profile.

Например, добавьте драйвер MySQL Connector Java в переменную classpath с помощью любой из следующих команд в зависимости от используемой оболочки командной строки:

# C shell(csh, tcsh):
shell> setenv CLASSPATH /path/MySQL-connector-java-ver-bin.jar:$CLASSPATH

В Windows 2000, Windows XP, Windows Server 2003 и Windows Vista можно установить переменную окружения в панели управления.

Установка Java Connector в Microsoft Windows

Выберите и загрузите нужный вам установщик здесь.

Затем выполните следующие шаги:

Шаг 1:

Дважды щёлкните по файлу установщика.

Шаг 2:

Нажмите ‘Run‘ и дождитесь завершения процесса.

Соединение с MySQL с помощью MySQL Connector/J

Приведенный ниже пример MySQL Connector показывает, как соединиться с базой данных, разорвать соединение и обработать ошибки.

Версия Java 7 Update 25 (сборка 1.7.0_25-b16):

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class test
{
public static void main (String[] args)
{
System.out.println("nn***** MySQL JDBC Connection Testing *****");
Connection conn = null;
try
{
Class.forName ("com.MySQL.jdbc.Driver").newInstance ();
String userName = "root";
String password = "pqrs123";
String url = "jdbc:MySQL://localhost/sakila";
conn = DriverManager.getConnection (url, userName, password);
System.out.println ("Database Connection Established...");
}
catch (Exception ex)
{
System.err.println ("Cannot connect to database server");
ex.printStackTrace();
}
finally
{
if (conn != null)
{
try
{
System.out.println("n***** Let terminate the Connection *****");
conn.close ();
System.out.println ("Database connection terminated... ");
}
catch (Exception ex)
{
System.out.println ("Error in connection termination!");
}
}
}
}
}

Пояснение:

Чтобы создать jdbc-подключение к базе данных c помощью MySQL Connector ODBC, нужно импортировать следующие пакеты из java.sql:

  • sql.Connection;
  • sql.DriverManager;
  • sql.SQLException;

Далее мы создаём класс ‘test‘ и метод main.

Приведенный ниже код создаёт соединение с базой данных:

conn = DriverManager.getConnection (url, userName, password);

Класс JDBC DriverManager определяет объекты, которые могут соединять приложения Java с драйвером JDBC. Этот класс включает в себя метод getConnection(). Он использует url-адрес jdbc, имя пользователя и пароль, чтобы установить соединение с базой данных, и возвращает объект подключения.

В коде, приведенном выше, мы использовали следующие url-адрес, имя пользователя и пароль:

  • Строка url «jdbc:MySQL://localhost/sakila», в которой первая часть — «jdbc:MySQL://localhost» — это тип базы данных (в данном случае MySQL) и сервер (в данном случае — localhost). Остальная часть — название базы данных (в данном случае — ‘sakila).
  • Имя пользователя MySQL определяется в переменной ‘userName‘.
  • Пароль для MySQL определяется в переменной ‘password‘.

DriverManager пытается соединиться с базой данных. Если соединение проходит успешно, создаётся объект Connection (сохраняется в переменной ‘conn’) и программа отображает сообщение Database Connection Established…” (“Соединение с базой данных установлено…”).

Если попытка соединения c помощью MySQL Connector оканчивается неудачей (например, если указан неверный пароль, адрес сервера и т.п.), тогда нужно обработать эту ситуацию. Мы ловим эту ошибку в блоке catch выражения trycatch, отображаем соответствующие сообщения и в конце закрываем соединение.

Компиляция и исполнение кода

Предположим, что файл ‘test.java’ находится на диске E:, а ‘MySQL-connector-java-5.1.31-bin.jar’ хранится в «C:Program FilesMySQLMySQL Connector J«.

Примечание: Путь class path – это путь, по которому Java Runtime Environment (JRE) ищет классы и другие файлы ресурсов. Можно изменить этот путь, используя опции -classpath или -cp некоторых команд Java, когда вы вызываете JWM или другие инструменты JDK, или изменив переменную окружения classpath.

Запросы к данным с использованием MySQL Connector/J

Предположим, что мы хотим получить имена (first_name, last_name) и размер зарплаты (salary) работников, которые получают больше средней зарплаты и работают в ИТ-отделе.

Структура базы данных ‘hr’:

Пример таблицы ‘работники’ (‘employees’):

+-------------+-------------+-------------+----------+--------------------+------------+------------+----------+----------------+------------+---------------+
| EMPLOYEE_ID | FIRST_NAME  | LAST_NAME   | EMAIL    | PHONE_NUMBER       | HIRE_DATE  | JOB_ID     | SALARY   | COMMISSION_PCT | MANAGER_ID | DEPARTMENT_ID |

+————-+————-+————-+———-+———————+————+————+———-+—————-+————+—————+

|         100 | Steven      | King        | SKING    | 515.123.4567       | 1987-06-17 | AD_PRES    | 24000.00 |           0.00 |          0 |            90 |

|         101 | Neena       | Kochhar     | NKOCHHAR | 515.123.4568       | 1987-06-18 | AD_VP      | 17000.00 |           0.00 |        100 |            90 |

|         102 | Lex         | De Haan     | LDEHAAN  | 515.123.4569       | 1987-06-19 | AD_VP      | 17000.00 |           0.00 |        100 |            90 |

|         103 | Alexander   | Hunold      | AHUNOLD  | 590.423.4567       | 1987-06-20 | IT_PROG    |  9000.00 |           0.00 |        102 |            60 |

|         104 | Bruce       | Ernst       | BERNST   | 590.423.4568       | 1987-06-21 | IT_PROG    |  6000.00 |           0.00 |        103 |            60 |

|         105 | David       | Austin      | DAUSTIN  | 590.423.4569       | 1987-06-22 | IT_PROG    |  4800.00 |           0.00 |        103 |            60 |

|         106 | Valli       | Pataballa   | VPATABAL | 590.423.4560       | 1987-06-23 | IT_PROG    |  4800.00 |           0.00 |        103 |            60 |

|         107 | Diana       | Lorentz     | DLORENTZ | 590.423.5567       | 1987-06-24 | IT_PROG    |  4200.00 |           0.00 |        103 |            60 |

|         108 | Nancy       | Greenberg   | NGREENBE | 515.124.4569       | 1987-06-25 | FI_MGR     | 12000.00 |           0.00 |        101 |           100 |

|         109 | Daniel      | Faviet      | DFAVIET  | 515.124.4169       | 1987-06-26 | FI_ACCOUNT |  9000.00 |           0.00 |        108 |           100 |

|         110 | John        | Chen        | JCHEN    | 515.124.4269       | 1987-06-27 | FI_ACCOUNT |  8200.00 |           0.00 |        108 |           100 |

|         111 | Ismael      | Sciarra     | ISCIARRA | 515.124.4369       | 1987-06-28 | FI_ACCOUNT |  7700.00 |           0.00 |        108 |           100 |

|         112 | Jose Manuel | Urman       | JMURMAN  | 515.124.4469       | 1987-06-29 | FI_ACCOUNT |  7800.00 |           0.00 |        108 |           100 |

|         113 | Luis        | Popp        | LPOPP    | 515.124.4567       | 1987-06-30 | FI_ACCOUNT |  6900.00 |           0.00 |        108 |           100 |

|         114 | Den         | Raphaely    | DRAPHEAL | 515.127.4561       | 1987-07-01 | PU_MAN     | 11000.00 |           0.00 |        100 |            30 |

|         115 | Alexander   | Khoo        | AKHOO    | 515.127.4562       | 1987-07-02 | PU_CLERK   |  3100.00 |           0.00 |        114 |            30 |

|         116 | Shelli      | Baida       | SBAIDA   | 515.127.4563       | 1987-07-03 | PU_CLERK   |  2900.00 |           0.00 |        114 |            30 |

|         117 | Sigal       | Tobias      | STOBIAS  | 515.127.4564       | 1987-07-04 | PU_CLERK   |  2800.00 |           0.00 |        114 |            30 |

|         118 | Guy         | Himuro      | GHIMURO  | 515.127.4565       | 1987-07-05 | PU_CLERK   |  2600.00 |           0.00 |        114 |            30 |

|         119 | Karen       | Colmenares  | KCOLMENA | 515.127.4566       | 1987-07-06 | PU_CLERK   |  2500.00 |           0.00 |        114 |            30 |

|         120 | Matthew     | Weiss       | MWEISS   | 650.123.1234       | 1987-07-07 | ST_MAN     |  8000.00 |           0.00 |        100 |            50 |

|         121 | Adam        | Fripp       | AFRIPP   | 650.123.2234       | 1987-07-08 | ST_MAN     |  8200.00 |           0.00 |        100 |            50 |

|         122 | Payam       | Kaufling    | PKAUFLIN | 650.123.3234       | 1987-07-09 | ST_MAN     |  7900.00 |           0.00 |        100 |            50 |

|         123 | Shanta      | Vollman     | SVOLLMAN | 650.123.4234       | 1987-07-10 | ST_MAN     |  6500.00 |           0.00 |        100 |            50 |

|         124 | Kevin       | Mourgos     | KMOURGOS | 650.123.5234       | 1987-07-11 | ST_MAN     |  5800.00 |           0.00 |        100 |            50 |

|         125 | Julia       | Nayer       | JNAYER   | 650.124.1214       | 1987-07-12 | ST_CLERK   |  3200.00 |           0.00 |        120 |            50 |

|         126 | Irene       | Mikkilineni | IMIKKILI | 650.124.1224       | 1987-07-13 | ST_CLERK   |  2700.00 |           0.00 |        120 |            50 |

|         127 | James       | Landry      | JLANDRY  | 650.124.1334       | 1987-07-14 | ST_CLERK   |  2400.00 |           0.00 |        120 |            50 |

|         128 | Steven      | Markle      | SMARKLE  | 650.124.1434       | 1987-07-15 | ST_CLERK   |  2200.00 |           0.00 |        120 |            50 |

|         129 | Laura       | Bissot      | LBISSOT  | 650.124.5234       | 1987-07-16 | ST_CLERK   |  3300.00 |           0.00 |        121 |            50 |

|         130 | Mozhe       | Atkinson    | MATKINSO | 650.124.6234       | 1987-07-17 | ST_CLERK   |  2800.00 |           0.00 |        121 |            50 |

|         131 | James       | Marlow      | JAMRLOW  | 650.124.7234       | 1987-07-18 | ST_CLERK   |  2500.00 |           0.00 |        121 |            50 |

|         132 | TJ          | Olson       | TJOLSON  | 650.124.8234       | 1987-07-19 | ST_CLERK   |  2100.00 |           0.00 |        121 |            50 |

|         133 | Jason       | Mallin      | JMALLIN  | 650.127.1934       | 1987-07-20 | ST_CLERK   |  3300.00 |           0.00 |        122 |            50 |

|         134 | Michael     | Rogers      | MROGERS  | 650.127.1834       | 1987-07-21 | ST_CLERK   |  2900.00 |           0.00 |        122 |            50 |

|         135 | Ki          | Gee         | KGEE     | 650.127.1734       | 1987-07-22 | ST_CLERK   |  2400.00 |           0.00 |        122 |            50 |

|         136 | Hazel       | Philtanker  | HPHILTAN | 650.127.1634       | 1987-07-23 | ST_CLERK   |  2200.00 |           0.00 |        122 |            50 |

|         137 | Renske      | Ladwig      | RLADWIG  | 650.121.1234       | 1987-07-24 | ST_CLERK   |  3600.00 |           0.00 |        123 |            50 |

|         138 | Stephen     | Stiles      | SSTILES  | 650.121.2034       | 1987-07-25 | ST_CLERK   |  3200.00 |           0.00 |        123 |            50 |

|         139 | John        | Seo         | JSEO     | 650.121.2019       | 1987-07-26 | ST_CLERK   |  2700.00 |           0.00 |        123 |            50 |

|         140 | Joshua      | Patel       | JPATEL   | 650.121.1834       | 1987-07-27 | ST_CLERK   |  2500.00 |           0.00 |        123 |            50 |

|         141 | Trenna      | Rajs        | TRAJS    | 650.121.8009       | 1987-07-28 | ST_CLERK   |  3500.00 |           0.00 |        124 |            50 |

|         142 | Curtis      | Davies      | CDAVIES  | 650.121.2994       | 1987-07-29 | ST_CLERK   |  3100.00 |           0.00 |        124 |            50 |

|         143 | Randall     | Matos       | RMATOS   | 650.121.2874       | 1987-07-30 | ST_CLERK   |  2600.00 |           0.00 |        124 |            50 |

|         144 | Peter       | Vargas      | PVARGAS  | 650.121.2004       | 1987-07-31 | ST_CLERK   |  2500.00 |           0.00 |        124 |            50 |

|         145 | John        | Russell     | JRUSSEL  | 011.44.1344.429268 | 1987-08-01 | SA_MAN     | 14000.00 |           0.40 |        100 |            80 |

|         146 | Karen       | Partners    | KPARTNER | 011.44.1344.467268 | 1987-08-02 | SA_MAN     | 13500.00 |           0.30 |        100 |            80 |

|         147 | Alberto     | Errazuriz   | AERRAZUR | 011.44.1344.429278 | 1987-08-03 | SA_MAN     | 12000.00 |           0.30 |        100 |            80 |

|         148 | Gerald      | Cambrault   | GCAMBRAU | 011.44.1344.619268 | 1987-08-04 | SA_MAN     | 11000.00 |           0.30 |        100 |            80 |

|         149 | Eleni       | Zlotkey     | EZLOTKEY | 011.44.1344.429018 | 1987-08-05 | SA_MAN     | 10500.00 |           0.20 |        100 |            80 |

|         150 | Peter       | Tucker      | PTUCKER  | 011.44.1344.129268 | 1987-08-06 | SA_REP     | 10000.00 |           0.30 |        145 |            80 |

|         151 | David       | Bernstein   | DBERNSTE | 011.44.1344.345268 | 1987-08-07 | SA_REP     |  9500.00 |           0.25 |        145 |            80 |

|         152 | Peter       | Hall        | PHALL    | 011.44.1344.478968 | 1987-08-08 | SA_REP     |  9000.00 |           0.25 |        145 |            80 |

|         153 | Christopher | Olsen       | COLSEN   | 011.44.1344.498718 | 1987-08-09 | SA_REP     |  8000.00 |           0.20 |        145 |            80 |

|         154 | Nanette     | Cambrault   | NCAMBRAU | 011.44.1344.987668 | 1987-08-10 | SA_REP     |  7500.00 |           0.20 |        145 |            80 |

|         155 | Oliver      | Tuvault     | OTUVAULT | 011.44.1344.486508 | 1987-08-11 | SA_REP     |  7000.00 |           0.15 |        145 |            80 |

|         156 | Janette     | King        | JKING    | 011.44.1345.429268 | 1987-08-12 | SA_REP     | 10000.00 |           0.35 |        146 |            80 |

|         157 | Patrick     | Sully       | PSULLY   | 011.44.1345.929268 | 1987-08-13 | SA_REP     |  9500.00 |           0.35 |        146 |            80 |

|         158 | Allan       | McEwen      | AMCEWEN  | 011.44.1345.829268 | 1987-08-14 | SA_REP     |  9000.00 |           0.35 |        146 |            80 |

|         159 | Lindsey     | Smith       | LSMITH   | 011.44.1345.729268 | 1987-08-15 | SA_REP     |  8000.00 |           0.30 |        146 |            80 |

|         160 | Louise      | Doran       | LDORAN   | 011.44.1345.629268 | 1987-08-16 | SA_REP     |  7500.00 |           0.30 |        146 |            80 |

|         161 | Sarath      | Sewall      | SSEWALL  | 011.44.1345.529268 | 1987-08-17 | SA_REP     |  7000.00 |           0.25 |        146 |            80 |

|         162 | Clara       | Vishney     | CVISHNEY | 011.44.1346.129268 | 1987-08-18 | SA_REP     | 10500.00 |           0.25 |        147 |            80 |

|         163 | Danielle    | Greene      | DGREENE  | 011.44.1346.229268 | 1987-08-19 | SA_REP     |  9500.00 |           0.15 |        147 |            80 |

|         164 | Mattea      | Marvins     | MMARVINS | 011.44.1346.329268 | 1987-08-20 | SA_REP     |  7200.00 |           0.10 |        147 |            80 |

|         165 | David       | Lee         | DLEE     | 011.44.1346.529268 | 1987-08-21 | SA_REP     |  6800.00 |           0.10 |        147 |            80 |

|         166 | Sundar      | Ande        | SANDE    | 011.44.1346.629268 | 1987-08-22 | SA_REP     |  6400.00 |           0.10 |        147 |            80 |

|         167 | Amit        | Banda       | ABANDA   | 011.44.1346.729268 | 1987-08-23 | SA_REP     |  6200.00 |           0.10 |        147 |            80 |

|         168 | Lisa        | Ozer        | LOZER    | 011.44.1343.929268 | 1987-08-24 | SA_REP     | 11500.00 |           0.25 |        148 |            80 |

|         169 | Harrison    | Bloom       | HBLOOM   | 011.44.1343.829268 | 1987-08-25 | SA_REP     | 10000.00 |           0.20 |        148 |            80 |

|         170 | Tayler      | Fox         | TFOX     | 011.44.1343.729268 | 1987-08-26 | SA_REP     |  9600.00 |           0.20 |        148 |            80 |

|         171 | William     | Smith       | WSMITH   | 011.44.1343.629268 | 1987-08-27 | SA_REP     |  7400.00 |           0.15 |        148 |            80 |

|         172 | Elizabeth   | Bates       | EBATES   | 011.44.1343.529268 | 1987-08-28 | SA_REP     |  7300.00 |           0.15 |        148 |            80 |

|         173 | Sundita     | Kumar       | SKUMAR   | 011.44.1343.329268 | 1987-08-29 | SA_REP     |  6100.00 |           0.10 |        148 |            80 |

|         174 | Ellen       | Abel        | EABEL    | 011.44.1644.429267 | 1987-08-30 | SA_REP     | 11000.00 |           0.30 |        149 |            80 |

|         175 | Alyssa      | Hutton      | AHUTTON  | 011.44.1644.429266 | 1987-08-31 | SA_REP     |  8800.00 |           0.25 |        149 |            80 |

|         176 | Jonathon    | Taylor      | JTAYLOR  | 011.44.1644.429265 | 1987-09-01 | SA_REP     |  8600.00 |           0.20 |        149 |            80 |

|         177 | Jack        | Livingston  | JLIVINGS | 011.44.1644.429264 | 1987-09-02 | SA_REP     |  8400.00 |           0.20 |        149 |            80 |

|         178 | Kimberely   | Grant       | KGRANT   | 011.44.1644.429263 | 1987-09-03 | SA_REP     |  7000.00 |           0.15 |        149 |             0 |

|         179 | Charles     | Johnson     | CJOHNSON | 011.44.1644.429262 | 1987-09-04 | SA_REP     |  6200.00 |           0.10 |        149 |            80 |

|         180 | Winston     | Taylor      | WTAYLOR  | 650.507.9876       | 1987-09-05 | SH_CLERK   |  3200.00 |           0.00 |        120 |            50 |

|         181 | Jean        | Fleaur      | JFLEAUR  | 650.507.9877       | 1987-09-06 | SH_CLERK   |  3100.00 |           0.00 |        120 |            50 |

|         182 | Martha      | Sullivan    | MSULLIVA | 650.507.9878       | 1987-09-07 | SH_CLERK   |  2500.00 |           0.00 |        120 |            50 |

|         183 | Girard      | Geoni       | GGEONI   | 650.507.9879       | 1987-09-08 | SH_CLERK   |  2800.00 |           0.00 |        120 |            50 |

|         184 | Nandita     | Sarchand    | NSARCHAN | 650.509.1876       | 1987-09-09 | SH_CLERK   |  4200.00 |           0.00 |        121 |            50 |

|         185 | Alexis      | Bull        | ABULL    | 650.509.2876       | 1987-09-10 | SH_CLERK   |  4100.00 |           0.00 |        121 |            50 |

|         186 | Julia       | Dellinger   | JDELLING | 650.509.3876       | 1987-09-11 | SH_CLERK   |  3400.00 |           0.00 |        121 |            50 |

|         187 | Anthony     | Cabrio      | ACABRIO  | 650.509.4876       | 1987-09-12 | SH_CLERK   |  3000.00 |           0.00 |        121 |            50 |

|         188 | Kelly       | Chung       | KCHUNG   | 650.505.1876       | 1987-09-13 | SH_CLERK   |  3800.00 |           0.00 |        122 |            50 |

|         189 | Jennifer    | Dilly       | JDILLY   | 650.505.2876       | 1987-09-14 | SH_CLERK   |  3600.00 |           0.00 |        122 |            50 |

|         190 | Timothy     | Gates       | TGATES   | 650.505.3876       | 1987-09-15 | SH_CLERK   |  2900.00 |           0.00 |        122 |            50 |

|         191 | Randall     | Perkins     | RPERKINS | 650.505.4876       | 1987-09-16 | SH_CLERK   |  2500.00 |           0.00 |        122 |            50 |

|         192 | Sarah       | Bell        | SBELL    | 650.501.1876       | 1987-09-17 | SH_CLERK   |  4000.00 |           0.00 |        123 |            50 |

|         193 | Britney     | Everett     | BEVERETT | 650.501.2876       | 1987-09-18 | SH_CLERK   |  3900.00 |           0.00 |        123 |            50 |

|         194 | Samuel      | McCain      | SMCCAIN  | 650.501.3876       | 1987-09-19 | SH_CLERK   |  3200.00 |           0.00 |        123 |            50 |

|         195 | Vance       | Jones       | VJONES   | 650.501.4876       | 1987-09-20 | SH_CLERK   |  2800.00 |           0.00 |        123 |            50 |

|         196 | Alana       | Walsh       | AWALSH   | 650.507.9811       | 1987-09-21 | SH_CLERK   |  3100.00 |           0.00 |        124 |            50 |

|         197 | Kevin       | Feeney      | KFEENEY  | 650.507.9822       | 1987-09-22 | SH_CLERK   |  3000.00 |           0.00 |        124 |            50 |

|         198 | Donald      | OConnell    | DOCONNEL | 650.507.9833       | 1987-09-23 | SH_CLERK   |  2600.00 |           0.00 |        124 |            50 |

|         199 | Douglas     | Grant       | DGRANT   | 650.507.9844       | 1987-09-24 | SH_CLERK   |  2600.00 |           0.00 |        124 |            50 |

|         200 | Jennifer    | Whalen      | JWHALEN  | 515.123.4444       | 1987-09-25 | AD_ASST    |  4400.00 |           0.00 |        101 |            10 |

|         201 | Michael     | Hartstein   | MHARTSTE | 515.123.5555       | 1987-09-26 | MK_MAN     | 13000.00 |           0.00 |        100 |            20 |

|         202 | Pat         | Fay         | PFAY     | 603.123.6666       | 1987-09-27 | MK_REP     |  6000.00 |           0.00 |        201 |            20 |

|         203 | Susan       | Mavris      | SMAVRIS  | 515.123.7777       | 1987-09-28 | HR_REP     |  6500.00 |           0.00 |        101 |            40 |

|         204 | Hermann     | Baer        | HBAER    | 515.123.8888       | 1987-09-29 | PR_REP     | 10000.00 |           0.00 |        101 |            70 |

|         205 | Shelley     | Higgins     | SHIGGINS | 515.123.8080       | 1987-09-30 | AC_MGR     | 12000.00 |           0.00 |        101 |           110 |

|         206 | William     | Gietz       | WGIETZ   | 515.123.8181       | 1987-10-01 | AC_ACCOUNT |  8300.00 |           0.00 |        205 |           110 |

+————-+————-+————-+———-+———————+————+————+———-+—————-+————+—————+

Код SQL:

SELECT first_name, last_name, salary
FROM employees
WHERE department_id IN
(SELECT department_id FROM departments WHERE department_name LIKE 'IT%')
AND salary > (SELECT avg(salary) FROM employees);

Далее следует код Java (версия 7 Update 25 (сборка 1.7.0_25-b16)) с использованием MySQL Connector J:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
public class testsql
{
public static void main (String[] args)
{
Connection conn = null;
try
{
Class.forName ("com.MySQL.jdbc.Driver").newInstance ();
String userName = "root";
String password = "datasoft123";
String url = "jdbc:MySQL://localhost/hr";
conn = DriverManager.getConnection (url, userName, password);

// Блок запроса SQL -> Начало здесь
Statement stmt = null;
ResultSet rs = null;

try {
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT first_name, last_name, salary FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE department_name LIKE 'IT%') AND salary > (SELECT avg(salary) FROM employees)");

// Запрашиваем данные из запроса
System.out.println ("n-------------SQL DATA-------------n");
while(rs.next()) {
//Получаем по имени столбца
String fname = rs.getString("first_name");
String lname = rs.getString("last_name");
int salary = rs.getInt("Salary");

//Отображаем значения
System.out.print("Name " + fname+' '+lname);
System.out.print(",Salary: " + salary);
}
System.out.println ("nn-------------END-------------n");
}
catch (SQLException ex){
// обрабатываем ошибки
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException sqlEx) { } // игнорируем ошибку
rs = null;
}

if (stmt != null) {
try {
stmt.close();
} catch (SQLException sqlEx) { } // игнорируем ошибку

stmt = null;
}
}
// Блок SQL запроса заканчивается здесь

}
catch (Exception ex)
{
System.err.println ("Cannot connect to database server");
ex.printStackTrace();
}
finally
{
if (conn != null)
{
try
{
// System.out.println("n***** Let terminate the Connection *****");
conn.close ();
// System.out.println ("nnDatabase connection terminated...");
}
catch (Exception ex)
{
System.out.println ("Error in connection termination!");
}
}
}
}
}

Компиляция и исполнение кода

Предположим, что файл ‘testsql.java’ находится на диске E:, а ‘MySQL-connector-java-5.1.31-bin.jar‘ хранится в «C:Program FilesMySQLMySQL Connector J».

Примечание: Путь class path – это путь к MySQL Connector Java, по которому Java Runtime Environment (JRE) ищет классы и другие файлы ресурсов. Можно изменить этот путь, используя опции -classpath или -cp некоторых команд Java, когда вы вызываете JWM или другие инструменты JDK, либо изменив переменную окружения classpath.

Перевод статьи “MySQL Java Connector” был подготовлен дружной командой проекта Сайтостроение от А до Я.