Соединение с базой данных 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. Вы можете загрузить последнюю версию драйвера отсюда. Выберите одну из кроссплатформенных версий:

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

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

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

Установка

Вы можете установить пакет драйверов 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 J ava в переменную 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:

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

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

Шаг 2:

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

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

Соединение с 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 «.

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

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

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

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

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

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

Пример таблицы ‘работники’ (‘ 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, salaryFROM employeesWHERE 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» .

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *