Перейти к содержимому

Как установить jdbc

  • автор:

MySQL

Одной из наиболее популярных СУБД в связке с Java является MySQL. Поэтому рассмотрим, как мы можем работать с MySQL в Java.

Подробнее про работу с MySQL можно посмотреть в соответствующем материале Руководство по MySQL

Для работы с MySql в Java необходимо установить официальный драйвер MySQL Connector/J . Загрузим его с адресса https://dev.mysql.com/downloads/connector/j/. Распакуем загруженный архив, найдем там собственно драйвер, который представляет собой файл с расширением jar (на момент написания данной статьи это файл mysql-connector-java-8.0.11.jar), и положим его в папку программы.

MySQL в Java и JDBC

Убедимся, что мы в прицнипе можем осуществлять взаимодействие с MySQL через данный драйвер. Для этого определим следующий код программы:

public class Program < public static void main(String[] args) < //java -classpath c:\Java\mysql-connector-java-8.0.11.jar;c:\Java Program try< Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); System.out.println("Connection succesfull!"); >catch(Exception ex) < System.out.println("Connection failed. "); System.out.println(ex); >> >

Для загрузки драйвера здесь применяется строка

Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance();

Метод Class.forName() в качестве параметра принимает строку, которая представляет полный путь к классу драйвера с учетом всех пакетов. В случае MySQL это путь «com.mysql.cj.jdbc.Driver». Таким образом, Метод Class.forName загружает класс драйвера, который будет использоваться.

Далее вызывается метод getDeclaredConstructor() , который возвращает конструктор данного класса. И в конце вызывается метод newInstance() , который создает с помощью конструктора объект данного класса. И после этого мы сможем взаимодействовать с сервером MySQL.

Убедимся, что сервер MySQL запущен, и скомпилируем и запустим программу на выполнение:

C:\Java>javac Program.java C:\Java>java -classpath c:\Java\mysql-connector-java-8.0.11.jar;c:\Java Program Connection succesfull! C:\Java>

В моем случае класс программы и драйвер размещены в папке C:\Java. Поэтому при выполнении программы после параметра -classpath я указываю полный путь к файлу драйвера — «c:\Java\mysql-connector-java-8.0.11.jar». Далее после точки с запятой указывается каталог, где находятся файлы программы, то есть опть же это каталог «C:\Java». И после этого идет название выполняемого класса программы — «Program».

И если все сделано правильно, то при выполнении программы мы можем увидеть на консоли строку «Connection succesfull!». После этого мы можем начать взаимодействовать с MySQL.

Установление связи с базой данных с использованием JDBC

JDBC является библиотекой Java 2 Standard Edition (J2SE), используемой для взаимодействия с базами данных SQL. Для изучения данной статьи вам потребуется доступ к базе данных. Если у вас не установлены базы данных, можно воспользоваться базой данных MYSQL, бесплатной БД, которую можно скачать на сайте www.mysql.org. Она работает во многих операционных средах.

Кроме работающей БД, вам также потребуется JDBC-драйвер. И хотя JDBC может работать почти со всеми базами данных, вам потребуется отдельный драйвер, предназначенный именно для вашей базы данных. Драйвера могут быть различными, некоторые из них могут работать даже с несколькими базами данных. Скачать их можно, воспользовавшись ссылкой JDBC Technology — Drivers.

Драйвер отображает JDBC-команды на используемую вами базу данных. Для MySQL драйвер можно найти на сайтах Sourceforge.net и MySQL.org.

Для работы с JDBC-библиотеками вам необходимо запустить сервер БД и JDBC-драйвер. Как и при работе с любыми классами, необходимо сделать классы JDBC-драйвера доступными для компилятора и рабочего окружения. Сконфигурируйте переменную окружения CLASPATH или скопируйте соответствующий JAR-файл со всеми его классами в директорию $JAVA_HOME/jre/lib/ext, расположенную в основной инсталляционной директории Java 2 Platform (J2SE).

Установив настройки окружения для базы данных и драйвера, можно приступать к написанию программного кода. На начальном этапе работы с JDBC рассматривается решение двух задач:

Шаг 1: Загрузите необходимый JDBC драйвер. Заметьте, что сделать классы доступными для рабочего окружения недостаточно.

Шаг 2: Установите соединение с базой данных. Соединение включает в себя указание на определенный источник данных. От этого источника зависит выбор необходимого драйвера.

Далее представлены способы, позволяющие осуществить выполнение этих шагов.

Шаг 1: Загрузка JDBC-драйвера

При поверхностном рассмотрении JDBC-драйверы можно считать классами. Они должны реализовывать интерфейс java.sql.Driver, однако разработчикам редко требуется использовать этот интерфейс напрямую. Единственным требованием к реализации драйвера является то, что при загрузке класс должен самостоятельно регистрироваться при помощи java.sql.DriverManager. Выполнение данного требования находится под ответственностью поставщика драйвера, но ни в коем случае не пользователя. Вам необходимо только загрузить класс, причем сделать это можно тремя различными способами:

Первый возможный способ загрузки JDBC-драйвера:

Создайте действительный экземпляр класса. После идентификации вашей базы данных и нахождения для нее соответствующего драйвера можно жестко задать вызов к конструктору.

Например, если в пути для доступа к SQL прописано mysql-2.0.13-bin.jar, вам потребуется создать экземпляр класса org.gjt.mm.mysql.Driver:

Driver d = new org.gjt.mm.mysql.Driver () ;

Данный метод хорошо работает для загрузки драйвера, однако у него есть свои недостатки. Хотя JDBC агностируем базой данных, пользователю вашего приложения придется использовать MySQL. Если пользователь предпочитает Oracle или Sybase, то для запуска программы нужно обязательно иметь MySQL.

Другая проблема состоит в том, что, создавая экземпляр драйвера явным образом, вы фактически инициируете создание двух экземпляров. Как уже упоминалось, при загрузке класса драйвер должен регистрироваться при помощи DriverManager. Поэтому, при загрузке класс создает свой собственный экземпляр и регистрируется с помощью DriverManager. Создать второй экземпляр можно при помощи прямого обращения к конструктору.

Второй возможный способ загрузки JDBC-драйвера:

Можно избежать создания двух экземпляров драйвера путем передачи в строке методу forName класса Class имени класса. Данное имя класса должно быть полностью пригодным (например, в случае с MySQL-драйвером им может быть org.gjt.mm.mysql.Driver) и задаваться в кавычках:

Class.forName ( «org.gjt.mm.mysql.Driver» ) ;

В обоих из этих случаев жестко задается имя драйвера базы данных, однако предпочтительнее использовать второй способ. Так как драйвер динамически загружается во время рабочего цикла, то при компиляции классам драйвера вовсе не обязательно быть доступными. При этом вам не требуется жестко задавать строку. Все что вы можете сделать – это извлечь имя драйвера из командной строки (или откуда-либо еще) и передать его. Таким образом, ваша программа будет работать и с MySQL, и с любым другим сервером БД, не требуя при этом никаких изменений или перекомпиляций кода.

String driver = args [ 0 ] ;
Class.forName ( driver ) ;

Третий способ загрузки JDBC-драйвера:

В первых двух предлагаемых нами методах вам требовалось передать откуда-либо имена драйверов. Существует и третий способ загрузки драйвера, не требующий написания никакого исходного кода. Укажите драйвер или набор драйверов, установив системное свойство jdbc.drivers, как показано ниже:

java -Djdbc.drivers=org.gjt.mm.mysql.Driver ProgName

Теперь в случае необходимости драйвер будет автоматически доступен для DriverManager. Если необходимо сделать доступными несколько драйверов, напишите их список, разделив элементы знаком «двоеточие».

Шаг 2: Установление соединения с базой данных

Источники данных идентифицируются при помощи URI-адреса, начинающегося с “jdbc:”. Продолжение строки зависит от вашего JDBC-драйвера. Каждому драйверу соответствует уникальная строка для отображения на драйвер, а также определенный механизм для локализации сервера, с которым должен будет взаимодействовать драйвер.

В случае драйвера MySQL, используется строка «mysql», а локализация задается другим URI. Полная строка будет иметь следующий формат:

jdbc:mysql: //[hostname][:port]/[dbname][?param1=value1][¶m2=value2].

Более конкретно, если хост, с которым вы хотите установить соединение, расположен на вашей же машине, именем базы данных является test и вам не требуется проверка имени пользователя и пароля, то в конечном итоге строка примет следующий вид:

jdbc:mysql: //localhost/test

Если у вас есть соответствующий URI, необходимый для идентификации драйвера, и драйвер, который может установить соединение с источником данных, то возможно фактическое соединение с источником. Для подобного поиска DriverManager обеспечивает метод getConnection. Данный метод возвращает объект Connection от первого драйвера, поддерживающего специальный протокол (в данном случае mysql). Если протокол не поддерживается ни одним зарегистрированным драйвером, то во время рабочего цикла возникнет ошибка.

String uri = «jdbc:mysql://localhost/test» ;
Connection con =
DriverManager.getConnection ( uri, username, password ) ;

Имя субпротокола (в данном случае mysql) определено в документации для JDBC-драйвера.

После установки соединения доступ к источнику данных становится открытым. Тем не менее, существует и второй способ, позволяющий идентифицировать и устанавливать соединение с источником данных. Источники данных могут быть получены посредством именной службы JNDI (Java Naming and Directory Interface).

Устанавливая соединение при помощи интерфейса JNDI, вместо DriverManager используется DriverSource и Context. Конкретнее, в случае MySQL реализацией javax.sql.DriverSource является класс org.gjt.mm.mysql.jdbc2.optional.MysqlDataSource, который обычно регистрируется вне области действия приложения. Вашему приложению остается только найти источник данных, основываясь на имени, привязанному к контексту.

Context ctx = new InitialContext () ;
ctx.addToEnvironment ( Context.INITIAL_CONTEXT_FACTORY,
«com.sun.jndi.fscontext.RefFSContextFactory» ) ;
DataSource ds = ( DataSource ) ctx.lookup ( «/tmp/jdbc/test» ) ;
Connection con = ds.getConnection ( username, password ) ;

Установив соединение, вы получаете доступ к базе данных, так же, как и при поиске DriverManager. Поиск DriverManager обычно производится в контексте приложения J2EE.

О наличие доступа к JNDI окружению станет известно, так как обычно оно не настроено только на поиск JDBC-источника.

Проверить оба способа соединения с базой данных можно при помощи специального тестового комплекта MySQL. Вы сможете найти в нем контрольные примеры JNDIDataSource и выражения. Для других баз данных также существуют подобные комплекты, однако вы можете воспользоваться и этим. Вам потребуется лишь произвести незначительные настройки, указав источник данных и драйвер, соответствующий данной БД.

Проверить полученные знания можно при помощи он-лайн теста.

Интерфейсы Connection и DatabaseMetaData и класс DriverManager

JDBC обеспечивает программный интерфейс API, позволяющий при помощи языка программирования Java получать доступ к данным, хранимым в таких источниках, как реляционная база данных, а также обрабатывать их. API включает в себя пакет java.sql, называемый основным API для JDBC, а также пакет javax.sql, являющийся необязательным API для JDBC (он включен в поставку J2SE версии 1.4).

Описываемые здесь интерфейсы и класс можно найти в пакете java.sql.

Интерфейс Connection представляет сессию соединения с базой данных, обеспечиваемую драйвером. Он также обеспечивает методы для создания выражений, управления соединениями и их свойствами. Метод ConnectiongetMetaData:

public DatabaseMetaData getMetaData ()

бросает исключение SQLException.

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

  • getConnection(String url) Пытается установить соединение с URL-адресом заданной базы данных.
  • getConnection(String url, Properties info) Пытается установить соединение с URL-адресом заданной базы данных. Параметры: url – адрес в формате jdbc:subprotocol:subname, info – список произвольных пар тег/значение типа String, передаваемых в качестве аргументов соединения. Обычно должна быть включена хотя бы одна пара «имя пользователя»/«пароль».
  • getConnection(String url, String user, String password) Пытается установить соединение с URL-адресом заданной базы данных. Параметры: url – адрес в формате jdbc:subprotocol:subname, user – пользователь базы данных, от имени которого устанавливается соединение, password – пароль пользователя.

Интерфейс DatabaseMetaData обеспечивает информацию о самой базе данных. Некоторые методы в этом интерфейсе принимают форму строк. Метод, извлекающий информацию о свойстве, не поддерживаемом драйвером, бросает исключение SQLException.

Вот несколько методов данного интерфейса:

  • getDriverName Извлекает имя текущего JDBC-драйвера.
  • getDriverVersion Извлекает значение версии JDBC-драйвера в виде строки.
  • getDatabaseProductVersion Извлекает значение версии текущего продукта БД.
  • Создайте программу, устанавливающую соединение с вашей базой данных
  • Отобразите информацию о базе данных и о драйвере, используемом для установки соединения

Методы для получения доступа к информации о базе данных доступны посредством интерфейса DatabaseMetaData, ассоциированного с соединением.

Java Data Objects

JDO (Java Data Objects – объекты данных Java) является программным интерфейсом API, позволяющим устанавливать «прозрачный» доступ к базе данных. Программист может написать код на языке Java, организующий «прозрачный» доступ к основному хранилищу данных, не привлекая для этой цели специальный код БД.

Интерфейсы JDO и JDBC дополняют друг друга. У каждой из данных технологий есть свои преимущества, обе они могут использоваться программистами различной квалификации для широкого диапазона задач.

Интерфейс API JDBC обеспечивает большую гибкость, предоставляя программистам возможность полного контроля над доступом к базе данных и управления кэшем. JDBC является более зрелой технологией и широко принята как полноценный API.

JDO обеспечивает программистам дополнительные удобства, а также контроль типов во время компиляции. Кроме того, JDO скрывает от программистов SQL, так что его изучение становится необязательным.

API JDO создается в Java Community Process.

A может Вас также заинтересует что-нибудь из этого:
  1. Java и базы данных → Вот здесь можно узнать больше об базе данных cloudscape. Часть 1
  2. Java и базы данных → Вот здесь можно узнать больше об базе данных cloudscape. Часть 2
  3. Java и базы данных → Вот здесь можно узнать больше об базе данных cloudscape. Часть 3
  4. Java и базы данных → Hibernate: Связи вида Многие-ко-Многим и Один-к-Одному
  5. Java и базы данных → Hibernate: Пользовательские типы в hibernate. Разбираемся с компонентами
  6. Java Standard Edition → Гибкое журналирование с помощью log4j

Руководство по JDBC. Соединение.

В прошлом уроке мы изучили понятие драйвера JDBC и его типы. После того, как мы установили необходимый драйвер мы можем создать соединение с базой данных (далее – БД).

Для того, чтобы установить соединение с БД, нам необходимо выполнить следующие шаги:

  • Импортировать пакет JDBC в наш Java код.
  • Зарегистрировать JDBC драйвер.
  • Передать информацию для соединения с БД (URL, имя пользователя и пароль).
  • Создать соединение с помощью метода getConnection().

Рассмотрим каждый шаг по отдельности.

Импортирование пакета JDBC

Для импорта пакета JDBC мы используем стандартное ключевое слово import, которое говорит компилятору подключить необходимые классы.

Для подключения JDBC нам необходимо подключить пакет java.sql.*

В коде это выглядит таким образом:

 import java.sql.*; 

Регистрация JDBC драйвера

После импорта JDBC мы должны зарегистрировать наш драйвер перед тем, как его использовать. Это процесс, с помощью которого файл класса драйвера загружается в память. После этого он может быть использован, как реализация интерфейса JDBC.

Существует два способа регистрации драйвера.

DriverManager.registerDriver()

В этом случае мы используем статический метод DriverManager.registerDriver() для регистрации драйвера.

В коде это выглядит следующим образом:

 try < Driver driver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver); >catch (SQLException e) < System.out.println("Unable to load driver class."); e.printStackTrace(); >> 

Class.forName()

Этот способ является наиболее распространённым. Мы используем метод Class.forName() для динамической загрузки класса драйвера в память, после чего происходит его автоматическая регистрация.

Данный способ является предпочтительным, так как он обеспечивает конфигурируемую и переносимую регистрацию драйверов.

В коде это выглядит, примерно, таким образом:

 try < Class.forName("com.mysql.jdbc.Driver"); >catch (ClassNotFoundException e) < System.out.println("Unable to load class."); e.printStackTrace(); >> 

Передача информации о БД

После того, как мы зарегистрировали наш драйвер, мы можем установить соединение, используется метод DriverManager.getConnection().

Этот метод имеет три перегруженных варианта:

  • getConnection (String url)
  • getConnection (String url, Properties props)
  • getConnection (String url, String user, String password)

Как мы видим, каждый из этих методов требует URL нашей БД. Т.е. нам необходимо передать информацию о нашей БД.

Для различных БД URL различен.

Driver name: com.mysql.jdbc.Driver

Driver name: oracle.jdbc.driver.OracleDriver

Создание соединения
После того, как мы передали всю необходимую информацию, мы можем создать физическое соединение с БД.

Рассмотрим пример создания соединения с БД MySQL:

 String URL = "jdbc:mysql://localhost/PROSELYTE_TUTORIAL"; String USER = "root"; String PASSWORD = "password"; Connection connection = DriverManger.getConnection(URL, USER, PASSWORD); 

Закрытие соединения
После того, как закончим работу с нашей программой нам необходимо закрыть все соединения и освободить ресурсы. Если мы не сделаем этого вручную, это будет сделано сборщиком мусора при уничтожении объектов, которые не используются.

Но полагаться на уборщик мусора – это крайне плохая идея и пример дурного тона.

В коде это выглядит так:

 connecion.close(); 

В ЭТОМ ПРИМЕРЕ ПРИЛОЖЕНИЯ все эти шаги показаны вместе. Советую более внимательно его изучить для более глубокого понимания материала.

В этом уроке мы рассмотрели соединение и разобрали все этапы его создания по отдельности.
В следующем уроке мы изучим такую сущность, как утверждения (Statements).

Документация

Этот пример показывает, как настроить источник данных и подключение к базе данных Microsoft ® SQL Server ® с помощью приложения Database Explorer или командной строки. Этот пример использует Microsoft JDBC Driver 4.0 для Microsoft SQL Server , чтобы соединиться с базой данных Microsoft SQL Server 2016 Express .

  • Шаг 1. Проверьте установку драйвера.
  • Шаг 2. Проверьте номер порта.
  • Шаг 3. Настройте аутентификацию операционной системы.
  • Шаг 4. Настройте источник данных.
  • Шаг 5. Подключение с помощью приложения Database Explorer или командной строки.

Шаг 1. Проверьте установку драйвера.

Если драйвер JDBC для Microsoft SQL Server не установлен на вашем компьютере, найдите, что ссылка на странице Driver Installation устанавливает драйвер. Следуйте инструкциям, чтобы загрузить и установить этот драйвер на вашем компьютере.

Шаг 2. Проверьте номер порта.

Завершите следующие шаги на машине, где SQL Server установлен, чтобы найти ваш номер порта для соединения с базой данных. Если вы испытываете проблемы связи с номером порта, что вы находите, связываетесь со своим администратором базы данных.

  1. На машине, где ваша база данных SQL Server установлена, нажмите Start. Выберите свою папку версии Microsoft SQL Server и нажмите SQL Server Configuration Manager.

Шаг 3. Настройте аутентификацию операционной системы.

Аутентификация Windows ® позволяет вам соединиться с базой данных с помощью учетной записи пользователя Windows. В этом случае Windows выполняет пользовательскую валидацию, и база данных не требует различного имени пользователя и пароля. Аутентификация Windows упрощает обслуживание учетных данных доступа к базе данных. После того, как вы добавите необходимые библиотеки в системный путь, Microsoft SQL Server , драйвер JDBC включает возможность соединения с помощью аутентификации Windows. Следующие шаги показывают, как добавить эти библиотеки в путь к библиотеке Java ® в MATLAB ® . Для получения дополнительной информации о библиотеках Java, смотрите Путь к классу Java (MATLAB).

  1. Гарантируйте, что у вас есть последняя библиотека драйвера Java, установленная на вашем компьютере. Чтобы установить последнюю библиотеку, смотрите Установку драйвера.
  2. Запустите функцию prefdir в Командном окне. Вывод этой команды является путем к файлу к папке настроек MATLAB на вашем компьютере. Для получения дополнительной информации смотрите prefdir .
  3. Закройте MATLAB.
  4. Перейдите к папке от шага 2 и создайте файл с именем javalibrarypath.txt в папке.
  5. Откройте javalibrarypath.txt и вставьте путь к файлу библиотеки Java sqljdbc_auth.dll . Этот файл установлен в следующем месте:

\sqljdbc_\\auth\

Шаг 4. Настройте источник данных.

Можно настроить источник данных с помощью диалогового окна JDBC Data Source Configuration, которое можно открыть из приложения Database Explorer или в командной строке.

  1. Откройте приложение Database Explorer путем нажатия на вкладку Apps на Панели инструментов MATLAB. Затем справа от раздела Apps кликните по стрелке Show more, чтобы открыть галерею приложений. Под Database Connectivity and Reporting нажмите Database Explorer. Также введите databaseExplorer в командной строке.
  2. В разделе Data Source выберите Configure Data Source>Configure JDBC data source.

Или, введите configureJDBCDataSource в командной строке. Диалоговое окно JDBC Data Source Configuration открывается.

После того, как вы завершаете настройку источника данных, соединяетесь с базой данных SQL Server с помощью приложения Database Explorer или драйвера JDBC и командной строки.

Шаг 5. Подключение с помощью приложения Database Explorer или командной строки.

Соединитесь с SQL Server Используя приложение Database Explorer
  1. На вкладке Database Explorer, в разделе Data Source, нажимают New Query.
  2. В Подключении к диалоговому окну Data Source соединитесь с аутентификацией Windows путем выбора источника данных, который вы задали из списка Data Source. Оставьте пробел полей Username и Password. Нажмите Connect. Или, подключение к вашей базе данных без аутентификации Windows путем выбора источника данных вы задали. Введите имя пользователя и пароль. Нажмите Connect. Диалоговое окно Catalog и Schema открывается.
  3. Выберите каталог и схему из списки Schema и Catalog. Нажмите OK. Приложение Database Explorer соединяется с базой данных и таблицами базы данных отображений в панели Data Browser. Вкладка источника данных появляется справа от панели. Заголовок вкладки источника данных является именем источника данных, которое вы задали во время настройки. Вкладка источника данных содержит пустой SQL Query и панели Data Preview.
  4. Выберите таблицы в панели Data Browser, чтобы запросить базу данных.
  5. Закройте вкладку источника данных, чтобы закрыть SQL-запрос и соединение с базой данных.

Совет

Чтобы закрыть соединение с базой данных, закройте все вкладки, которые имеют заголовки, начинающиеся с имени соответствующего источника данных. Например, если именем источника данных является MS SQL Server , и две вкладки под названием MS SQL Server и MS SQL Server1 открыты, то закрывают обе вкладки. Чтобы закрыть все соединения с базой данных, закройте приложение Database Explorer.

Соединитесь с SQL Server Используя драйвер JDBC и командную строку
  1. Чтобы соединиться с аутентификацией Windows, используйте сконфигурированный источник данных JDBC и задайте пустое имя пользователя и пароль. Например, этот код принимает, что вы соединяетесь с источником данных JDBC под названием MSSQLServerAuth .
datasource = "MSSQLServerAuth"; username = ""; password = ""; conn = database(datasource,username,password);

Или, чтобы соединиться без аутентификации Windows, используйте сконфигурированный источник данных JDBC и задайте имя пользователя username и пароль pwd . Например, этот код принимает, что вы соединяетесь с источником данных JDBC под названием MSSQLServer .

datasource = "MSSQLServer"; username = "username"; password = "pwd"; conn = database(datasource,username,password);

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

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

Luxury Car Rental in Miami | Reserve a Premium Vehicle with RealCar