Как подключить драйвер jdbc к проекту java

Обновлено: 07.07.2024

Java, являясь одним из наиболее известных языков программирования, обеспечивает обширную поддержку баз данных. Это помогает нам подключаться к различным базам данных через JDBC (Java Database Connectivity).

Введение в JDBC

JDBC является одним из стандартных Java API для независимой от базы данных связи между языком программирования Java и широким спектром баз данных. Этот API позволяет кодировать операторы запроса доступа на языке структурированных запросов (SQL). Это главным образом включает в себя открытие соединения, создание базы данных SQL, выполнение запросов SQL и затем получение результатов.

JDBC API можно использовать для доступа к табличным данным, хранящимся в любой реляционной базе данных. При этом вы можете обновлять, сохранять, извлекать и удалять данные из баз данных. Это похоже на Open Database Connectivity (ODBC), предоставляемый Microsoft.

Для лучшего понимания работы JDBC давайте углубимся в тему и разберем архитектуру, лежащую в основе Java Database Connectivity.

Общие компоненты JDBC

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

Шаги по созданию приложения JDBC

Чтобы создать Приложение JDBC, вам нужно выполнить несколько шагов. Давайте посмотрим, что они.

создание приложения

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

Выше кода создает таблицу в вашей базе данных localhost. Чтобы вставить значения в созданную базу данных, вы можете обратиться к приведенному ниже коду. Я буду писать код только для шага 4. Остальная часть кода остается такой же, как указано выше.

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

Типы драйверов JDBC

Драйверы JDBC используются для реализации определенных интерфейсов в API JDBC, для взаимодействия с сервером базы данных. По сути, драйвер JDBC выполняет три действия, и они заключаются в следующем:

  1. Устанавливает соединение с источником данных.
  2. Он будет отправлять запросы и обновлять операторы в источник данных.
  3. Наконец, он обрабатывает результаты.

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

Соединения JDBC

  • getConnection (String url)
  • getConnection (строковый URL, свойства prop)
  • getConnection (строковый URL, строковый пользователь, строковый пароль)

Вы можете создать соединение, используя URL базы данных, имя пользователя и пароль, а также используя объект свойств.

Наконец, чтобы завершить сеанс работы с базой данных, вам необходимо закрыть все соединения с базой данных. Однако, если вы забудете, сборщик мусора Java закроет соединение, когда очистит устаревшие объекты.

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

Выбор нужного JAR-файла

Microsoft JDBC Driver обеспечивает различные Jar-файлы, которые можно использовать в соответствии с предпочитаемыми параметрами среды выполнения Java (JRE), как указано ниже.

Microsoft JDBC Driver 9.4 для SQL Server содержит следующие файлы библиотеки классов: mssql-jdbc-9.4.0.jre8.jar, mssql-jdbc-9.4.0.jre11.jar и mssql-jdbc-9.4.0.jre16.jar.

Microsoft JDBC Driver 9.2 для SQL Server содержит следующие файлы библиотеки классов: mssql-jdbc-9.2.1.jre8.jar, mssql-jdbc-9.2.1.jre11.jar и mssql-jdbc-9.2.1.jre15.jar.

Microsoft JDBC Driver 8.4 для SQL Server содержит следующие файлы библиотеки классов: mssql-jdbc-8.4.1.jre8.jar, mssql-jdbc-8.4.1.jre11.jar и mssql-jdbc-8.4.1.jre14.jar.

Microsoft JDBC Driver 8.2 для SQL Server содержит следующие файлы библиотеки классов: mssql-jdbc-8.2.2.jre8.jar, mssql-jdbc-8.2.2.jre11.jar и mssql-jdbc-8.2.2.jre13.jar.

Microsoft JDBC Driver 7.4 для SQL Server включает следующие файлы библиотеки классов: mssql-jdbc-7.4.1.jre8.jar, mssql-jdbc-7.4.1.jre11.jar и mssql-jdbc-7.4.1.jre12.jar.

Microsoft JDBC Driver 7.2 для SQL Server обеспечивает файлы библиотеки классов mssql-jdbc-7.2.2.jre8.jar и mssql-jdbc-7.2.2.jre11.jar.

Microsoft JDBC Driver 7.0 для SQL Server обеспечивает файлы библиотеки классов mssql-jdbc-7.0.0.jre8.jar и mssql-jdbc-7.0.0.jre10.jar.

Microsoft JDBC Driver 6.4 для SQL Server обеспечивает файлы библиотеки классов mssql-jdbc-6.4.0.jre7.jar, mssql-jdbc-6.4.0.jre8.jar и mssql-jdbc-6.4.0.jre9.jar.

Microsoft JDBC Driver 6.2 для SQL Server обеспечивает файлы библиотеки классов mssql-jdbc-6.2.2.jre7.jar и mssql-jdbc-6.2.2.jre8.jar.

Microsoft JDBC Driver 6.0 и 4.2 для SQL Server обеспечивают файлы библиотеки классов sqljdbc41.jar и sqljdbc42.jar.

Microsoft JDBC Driver 4.1 для SQL Server обеспечивает файл библиотеки класса sqljdbc41.jar.

От выбора версии драйвера также зависит набор доступных функций. Дополнительные сведения о выборе JAR-файла см. в описании требований к системе для JDBC Driver.

Настройка пути к классу

JAR-файлы Microsoft JDBC Driver не являются частью Java SDK и должны быть включены в путь к классу пользовательского приложения.

Если используется JDBC Driver 9.4, настройте путь к классу, чтобы включить следующие файлы: mssql-jdbc-9.4.0.jre8.jar, mssql-jdbc-9.4.0.jre11.jar или mssql-jdbc-9.4.0.jre16.jar.

Если используется JDBC Driver 9.2, настройте путь к классу, чтобы включить следующие файлы: mssql-jdbc-9.2.1.jre8.jar, mssql-jdbc-9.2.1.jre11.jar или mssql-jdbc-9.2.1.jre15.jar.

Если используется JDBC Driver 8.4, настройте путь к классу, чтобы включить следующие файлы: mssql-jdbc-8.4.1.jre8.jar, mssql-jdbc-8.4.1.jre11.jar или mssql-jdbc-8.4.1.jre14.jar.

Если используется JDBC Driver 8.2, настройте путь к классу, чтобы включить следующие файлы: mssql-jdbc-8.2.2.jre8.jar, mssql-jdbc-8.2.2.jre11.jar или mssql-jdbc-8.2.2.jre13.jar.

Если используется JDBC Driver 7.4, настройте путь к классу, чтобы включить следующие файлы: mssql-jdbc-7.4.1.jre8.jar, mssql-jdbc-7.4.1.jre11.jar или mssql-jdbc-7.4.1.jre12.jar.

Если используется JDBC Driver 7.2, настройте путь к классу, чтобы включить файл mssql-jdbc-7.2.2.jre8.jar или mssql-jdbc-7.2.2.jre11.jar.

Если используется JDBC Driver 7.0, настройте путь к классу, чтобы включить файл mssql-jdbc-7.0.0.jre8.jar или mssql-jdbc-7.0.0.jre10.jar.

Если используется JDBC Driver 6.4, настройте путь к классу, чтобы включить следующие файлы: mssql-jdbc-6.4.0.jre7.jar, mssql-jdbc-6.4.0.jre8.jar или mssql-jdbc-6.4.0.jre9.jar.

Если используется JDBC Driver 6.2, настройте путь к классу, чтобы включить файл mssql-jdbc-6.2.2.jre7.jar или mssql-jdbc-6.2.2.jre8.jar.

Если используется JDBC Driver 4.1 или 4.2, настройте путь к классу, чтобы включить файл из соответствующей загрузки драйвера sqljdbc41.jar или sqljdbc42.jar.

Если в пути к классу отсутствует запись для правильного Jar-файла, приложение выдает общее исключение Class not found .

Для Microsoft JDBC Driver 9.4

Файлы mssql-jdbc-9.4.0.jre8.jar, mssql-jdbc-9.4.0.jre11.jar и mssql-jdbc-9.4.0.jre16.jar установлены в следующих расположениях:

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Windows:

CLASSPATH =.;C:\Program Files\Microsoft JDBC Driver 9.4 for SQL Server\sqljdbc_9.4\enu\mssql-jdbc-9.4.0.jre11.jar

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Unix/Linux:

Убедитесь в том, что в инструкции CLASSPATH содержится только один драйвер Microsoft JDBC Driver для SQL Server, то есть только один из файлов mssql-jdbc-9.4.0.jre8.jar, mssql-jdbc-9.4.0.jre11.jar и mssql-jdbc-9.4.0.jre16.jar.

Для Microsoft JDBC Driver 9.2

Файлы mssql-jdbc-9.2.1.jre8.jar, mssql-jdbc-9.2.1.jre11.jar или mssql-jdbc-9.2.1.jre15.jar установлены в следующих расположениях:

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Windows:

CLASSPATH =.;C:\Program Files\Microsoft JDBC Driver 9.2 for SQL Server\sqljdbc_9.2\enu\mssql-jdbc-9.2.1.jre11.jar

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Unix/Linux:

Убедитесь в том, что в инструкции CLASSPATH содержится только один драйвер Microsoft JDBC Driver для SQL Server, то есть mssql-jdbc-9.2.1.jre8.jar, mssql-jdbc-9.2.1.jre11.jar или mssql-jdbc-9.2.1.jre15.jar.

Для Microsoft JDBC Driver 8.4

Файлы mssql-jdbc-8.4.1.jre8.jar, mssql-jdbc-8.4.1.jre11.jar или mssql-jdbc-8.4.1.jre14.jar установлены в следующих расположениях:

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Windows:

CLASSPATH =.;C:\Program Files\Microsoft JDBC Driver 8.4 for SQL Server\sqljdbc_8.4\enu\mssql-jdbc-8.4.1.jre11.jar

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Unix/Linux:

Убедитесь, что в инструкции CLASSPATH содержится только один драйвер Microsoft JDBC Driver для SQL Server, то есть mssql-jdbc-8.4.1.jre8.jar, mssql-jdbc-8.4.1.jre11.jar или mssql-jdbc-8.4.1.jre14.jar.

Для Microsoft JDBC Driver 8.2

Файлы mssql-jdbc-8.2.2.jre8.jar, mssql-jdbc-8.2.2.jre11.jar или mssql-jdbc-8.2.2.jre13.jar установлены в следующих расположениях:

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Windows:

CLASSPATH =.;C:\Program Files\Microsoft JDBC Driver 8.2 for SQL Server\sqljdbc_8.2\enu\mssql-jdbc-8.2.2.jre11.jar

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Unix/Linux:

Убедитесь, что в инструкции CLASSPATH содержится только один драйвер Microsoft JDBC Driver для SQL Server, то есть mssql-jdbc-8.2.2.jre8.jar, mssql-jdbc-8.2.2.jre11.jar или mssql-jdbc-8.2.2.jre13.jar.

Для Microsoft JDBC Driver 7.4

Файлы mssql-jdbc-7.4.1.jre8.jar, mssql-jdbc-7.4.1.jre11.jar или mssql-jdbc-7.4.1.jre12.jar установлены в следующих расположениях:

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Windows:

CLASSPATH =.;C:\Program Files\Microsoft JDBC Driver 7.4 for SQL Server\sqljdbc_7.4\enu\mssql-jdbc-7.4.1.jre11.jar

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Unix/Linux:

Убедитесь, что в инструкции CLASSPATH содержится только один драйвер Microsoft JDBC Driver для SQL Server, то есть mssql-jdbc-7.4.1.jre8.jar, mssql-jdbc-7.4.1.jre11.jar или mssql-jdbc-7.4.1.jre12.jar.

Для Microsoft JDBC Driver 7.2

Файлы mssql-jdbc-7.2.2.jre8.jar или mssql-jdbc-7.2.2.jre11.jar установлены в следующих местах.

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Windows:

CLASSPATH =.;C:\Program Files\Microsoft JDBC Driver 7.2 for SQL Server\sqljdbc_7.2\enu\mssql-jdbc-7.2.2.jre11.jar

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Unix/Linux:

Убедитесь, что в инструкции CLASSPATH содержится только один драйвер Microsoft JDBC Driver для SQL Server, то есть либо mssql-jdbc-7.2.2.jre8.jar, либо mssql-jdbc-7.2.2.jre11.jar.

Для Microsoft JDBC Driver 7.0

Файлы mssql-jdbc-7.0.0.jre8.jar или mssql-jdbc-7.0.0.jre10.jar установлены в следующих местах.

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Windows:

CLASSPATH =.;C:\Program Files\Microsoft JDBC Driver 7.0 for SQL Server\sqljdbc_7.0\enu\mssql-jdbc-7.0.0.jre10.jar

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Unix/Linux:

Убедитесь, что в инструкции CLASSPATH содержится только один драйвер Microsoft JDBC Driver для SQL Server, то есть либо mssql-jdbc-7.0.0.jre8.jar, либо mssql-jdbc-7.0.0.jre10.jar.

Для Microsoft JDBC Driver 6.4

Файлы mssql-jdbc-6.4.0.jre7.jar, **mssql-jdbc-6.4.0.jre8.jar или mssql-jdbc-6.4.0.jre9.jar установлены в следующих местах.

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Windows:

CLASSPATH =.;C:\Program Files\Microsoft JDBC Driver 6.4 for SQL Server\sqljdbc_6.4\enu\mssql-jdbc-6.4.0.jre9.jar

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Unix/Linux:

Убедитесь, что в инструкции CLASSPATH содержится только один драйвер Microsoft JDBC Driver для SQL Server, то есть mssql-jdbc-6.4.0.jre7.jar, **mssql-jdbc-6.4.0.jre8.jar или mssql-jdbc-6.4.0.jre9.jar.

Для Microsoft JDBC Driver 6.2

Файлы mssql-jdbc-6.2.2.jre7.jar или mssql-jdbc-6.2.2.jre8.jar установлены в следующих местах.

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Windows:

CLASSPATH =.;C:\Program Files\Microsoft JDBC Driver 6.2 for SQL Server\sqljdbc_6.2\enu\mssql-jdbc-6.2.2.jre8.jar

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Unix/Linux:

Убедитесь, что в инструкции CLASSPATH содержится только один драйвер Microsoft JDBC Driver для SQL Server, то есть либо mssql-jdbc-6.2.2.jre7.jar, либо mssql-jdbc-6.2.2.jre8.jar.

Для Microsoft JDBC Driver 4.1, 4.2 и 6.0

Файл sqljdbc.jar file, sqljdbc4.jar file, sqljdbc41.jar или sqljdbc42.jar устанавливается в следующее расположение:

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Windows:

CLASSPATH =.;C:\Program Files\Microsoft JDBC Driver 6.0 for SQL Server\sqljdbc_4.2\enu\sqljdbc42.jar

В следующем фрагменте кода дан пример инструкции CLASSPATH, используемой для приложения Unix/Linux:

Инструкция CLASSPATH должна содержать только один драйвер Microsoft JDBC Driver для SQL Server, то есть sqljdbc.jar, sqljdbc4.jar, sqljdbc41.jar либо sqljdbc42.jar.

В системах Windows имена каталогов, длина которых превышает оговоренный в соглашении об именовании размер 8.3, а также папки, имена которых содержат пробелы, могут вызвать проблемы с путями к классам. Если вы подозреваете такие проблемы, временно переместите файл sqljdbc.jar, sqljdbc4.jar или sqljdbc41.jar в каталог с простым именем, например C:\Temp , измените путь к классам и проверьте, устранило ли это проблему.

Приложения, которые выполняются непосредственно в командной строке

Путь к классам настраивается в операционной системе. Добавьте sqljdbc.jar, sqljdbc4.jar или sqljdbc41.jar в путь к классам в системе. Вы также можете указать путь к классам в командной строке Java при запуске приложения, используя параметр java -classpath .

Приложения, выполняющиеся в интегрированной среде разработки

Каждый поставщик интегрированных сред разработки предоставляет собственный метод установки classpath. Простое задание пути к классам в операционной системе не будет работать. Необходимо добавить sqljdbc.jar, sqljdbc4.jar или sqljdbc41.jar в путь к классам интегрированной среды разработки.

Сервлеты и JSP

Сервлеты и JSP выполняются в подсистеме сервлетов/JSP, например Tomcat. Путь к классам должен быть задан в соответствии с документацией подсистемы сервлетов и JSP. Простое задание пути к классам в операционной системе не будет работать. Некоторые подсистемы сервлетов/JSP предоставляют экраны настройки, которые можно использовать для задания пути к классам подсистемы. В этом случае необходимо добавить к существующему пути к классу подсистемы нужный JAR-файл драйвера JDBC и перезапустить подсистему. В остальных случаях можно развернуть драйвер, скопировав файл sqljdbc.jar, sqljdbc4.jar или sqljdbc41.jar в определенный каталог (например, lib) во время установки подсистемы. Путь к классам драйвера подсистемы также можно задать в файле конфигурации конкретной подсистемы.

Enterprise Java Beans

Компоненты Enterprise Java Beans (EJB) выполняются в контейнере EJB. Контейнеры EJB предоставляются различными поставщиками. Java-приложения работают в браузере, но загружаются с веб-сервера. Скопируйте sqljdbc.jar, sqljdbc4.jar или sqljdbc41.jar в корень веб-сервера и укажите имя JAR-файла в параметре "archive" HTML-тега "applet", например: <applet . archive=mssql-jdbc-***.jar> .

Установление простого подключения к базе данных

В случае использования библиотеки классов sqljdbc.jar приложения сначала должны зарегистрировать драйвер следующим образом:

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

Начиная с JDBC API 4.0 метод DriverManager.getConnection() усовершенствован и загружает драйверы JDBC автоматически. Поэтому при использовании библиотек JAR драйвера приложениям не обязательно вызывать метод Class.forName для регистрации или загрузки драйвера.

Библиотеку классов sqljdbc4.JAR, sqljdbc41.jar или sqljdbc42.jar нельзя использовать с более старыми версиями среды выполнения Java. Список версий JRE-файлов, поддерживаемых Microsoft JDBC Driver для SQL Server, см. в описании требований к системе для JDBC Driver.

Дополнительные сведения о подключении к источникам данных и использовании URL-адреса подключения см. в руководствах по созданию URL-адреса подключения и настройке свойств подключения.

Эта статья открывает небольшой цикл, посвященный азам взаимодействия с базами данных (БД) в Java и введению в SQL. Многие программы заняты обработкой и модификацией информации, её поддержкой в актуальном состоянии. Поскольку данные — весьма важная часть логики программ, то под них зачастую выделяют отдельное хранилище. Информация в нём структурирована и подчинена специальным правилам, чтобы обеспечить правильность обработки и хранения. Доступ к данным и их изменение осуществляется с помощью специального языка запросов — SQL (Structured Query Language).

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

Виды СУБД

  • Иерархические. Данные организованы в виде древовидной структуры. Пример — файловая система, которая начинается с корня диска и далее прирастает ветвями файлов разных типов и папок разной степени вложенности.
  • Сетевые. Видоизменение иерархической, у каждого узла может быть больше одного родителя.
  • Объектно-ориентированные. Данные организованы в виде классов/объектов c их атрибутами и принципами взаимодействия согласно ООП.
  • Реляционные. Данные этого вида СУБД организованы в таблицах. Таблицы могут быть связаны друг с другом, информация в них структурирована.
  • Что такое SQL-Сервер и как он работает? Взаимодействие с СУБД происходит по клиент-серверному принципу. Некая внешняя программа посылает запрос в виде операторов и команд на языке SQL, СУБД его обрабатывает и высылает ответ. Для упрощения примем, что SQL Сервер = СУБД.
  • Data Definition Language (DDL) – определения данных. Создание структуры БД и её объектов;
  • Data Manipulation Language(DML) – собственно взаимодействие с данными: вставка, удаление, изменение и чтение;
  • Transaction Control Language (TCL) – управление транзакциями;
  • Data Control Language(DCL) – управление правами доступа к данным и структурам БД.

Часть 1. Введение в SQL - 2

В 80-е годы прошлого века персональные компьютеры типа PC XT/AT завоевали рынок. Во многом это произошло благодаря модульности их конструкции. Это означает, что пользователь мог довольно просто менять ту или иную составную часть своего компьютера (процессор, видеокарту, диски и тому подобное). Это замечательное свойство сохранилось и поныне: мы меняем видеокарту и обновляем драйвер (иногда он и вовсе обновляется сам, в автоматическом режиме). Чаще всего при таких манипуляциях ничего плохого не происходит, и существующие программы продолжат работать с обновившейся системой без переустановки. Аналогично и для работы в Java с СУБД. Для стандартизации работы с SQL-серверами взаимодействие с ней можно выполнять через единую точку — JDBC (Java DataBase Connectivity). Она представляет собой реализацию пакета java.sql для работы с СУБД. Производители всех популярных SQL-серверов выпускают для них драйверы JDBC. Рассмотрим схему ниже. Приложение использует экземпляры классов из java.sql. Затем мы передаем необходимые команды для получения/модификации данных. Далее java.sql через jdbc-драйвер взаимодействует с СУБД и возвращает нам готовый результат. Для перехода на СУБД другого производителя часто достаточно сменить JDBC и выполнить базовые настройки. Остальные части программы при этом не меняются.

Первая программа

Разбор кода

Блок констант:

  1. DB_Driver: Здесь мы определили имя драйвера, которое можно узнать, например, кликнув мышкой на подключенную библиотеку и развернув её структуру в директории lib текущего проекта.
  2. DB_URL: Адрес нашей базы данных. Состоит из данных, разделённых двоеточием:
  3. Протокол=jdbc
  4. Вендор (производитель/наименование) СУБД=h2
  5. Расположение СУБД, в нашем случае путь до файла (c:/JavaPrj/SQLDemo/db/stockExchange). Для сетевых СУБД тут дополнительно указываются имена или IP адреса удалённых серверов, TCP/UDP номера портов и так далее.

Обработка ошибок:

Вызов методов нашего кода может вернуть ошибки, на которые следует обратить внимание. На данном этапе мы просто информируем о них в консоли. Заметим, что ошибки при работе с СУБД — это чаще всего SQLException.

Прежде чем подключаться к серверу БД необходимо выяснить, к какому именно серверу вы собираетесь подключаться и скачать соответствующий драйвер. Драйвер представляет собой *.jar файл. В нашем случае мною было найдено два драйвера:

  1. jTDS для MS SQL Server и Sybase AS. Можно взять здесь.
  2. JDBC для MS SQL Server от Microsoft. Можно взять здесь.

Затем надо подключить этот драйвер к проекту. В NetBeans 6.8 это делается очень просто – в закладке Projects откройте дерево проекта, щёлкните правой кнопкой мыши по Libraries и нажмите “Add Library”.


Сразу хотелось бы заметить, что драйвер от Microsoft работает медленнее примерно в 2,5 раза.

Итак, для подключения нам понадобится:

  1. Рабочий SQL Server
  2. База данных для примера
  3. Драйвера для подключения
  4. Собственно, Java

Мы разберём два способа подключения: с помощью IDE (NetBeans 6.8) и просто в коде.

Начнём со второго.

Первым делом импортируйте пакет java.sql.*;, который содержит классы для работы с БД.

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

  1. Class.forName("полное имя класса").newInstance();
    Например, Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
  2. DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());
  3. Class.forName(“полное имя класса”);

никакой разницы в них нет, задача ведь в том, чтобы classloader загрузил наш драйвер.

Следующий шаг это передача сведений о подключении к базе данных в виде URL-адреса подключения.

Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433","username", "password");

1433 – порт принимаемый по умолчанию.

Если вы используете драйвер jTDS, то подключение будет выглядеть следующим образом:

DriverManager.registerDriver(new net.sourceforge.jtds.jdbc.Driver());
Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433"," username ", " password ");

Теперь подключимся к БД с помощью NetBeans 6.8.

Перейдите на вкладку Services и щёлкните правой кнопкой мыши по Database, затем “New Connection…”


В поле “Driver Name” выберите “New Driver…”. Нажмите “Add” и укажите путь к библиотеке драйвера. IDE сама найдёт нужный класс. Нажмите OK. В поле Host укажите адрес сервера (если он установлен у вас на компьютере, то это будет Localhost или 127.0.0.1). Port 1433 по умолчанию. Затем название БД, имя и пароль для подключения. Если вы всё сделали правильно, то перейдёте на вкладку Advanced, где нужно будет выбрать Scheme, у меня по умолчанию в базе данных это была ”dbo”. Всё.

Проблема с которой вы можете столкнуться на данном этапе это отключенная SQL авторизация (у меня так было по умолчанию). В этом случае java будет генерировать «java.sql.SQLException: Пользователю "username" не удалось войти в систему. Пользователь не связан с доверенным соединением с SQL Server.» Для того чтобы избежать этой проблемы просто в свойствах компонента DataBase Engine в вкладке Безопасность нажмите «Проверка подлинности SQL Server и Windows»



Не забудьте создать пользователя, если вы этого ещё не сделали.

2. Класс Connection

Класс java.sql.Connection представляет в JDBC сеанс работы с базой данных. Он предоставляет приложению объекты Statement (и его подклассы) для этого сеанса. Он также управляет транзакциями для этих команд. По умолчанию каждая команда выполняется в отдельной транзакции. Объект Connection позволяет отключить функцию Autocommit автоматического завершения транзакции. В этом случае требуется явно завершить транзакцию, иначе результаты выполнения всех команд будут потеряны.

Основные методы:

public void close() throws SQLException
Этот метод позволяет вручную освободить все ресурсы, такие как сетевые соединения и блокировки базы данных, связанные с данным объектом Connection. Этот метод автоматически вызывается при сборке мусора; лучше, однако, вручную закрыть Connection, если вы в нем больше не нуждаетесь.

public Statement createStatement() throws SQLException
public Statement createStatement(int type, int concur) throws SQLException
Метод создает объект Statement, связанный с сеансом Connection. Версия без аргументов создает объект Statement, для которого экземпляры ResultSet имеют тип только для чтения и перемещения в прямом направлении.

public boolean getAutoCommit() throws SQLException
public void setAutoCommit(boolean ac) throws SQLException
По умолчанию все объекты Connection находятся в режиме автозавершения. В этом режиме каждая команда завершается сразу после выполнения. Может оказаться предпочтительнее вручную завершить серию команд в приложении как единую транзакцию. В этом случае метод setAutoCommit() используется для отключения автозавершения. Затем, после выполнения своих команд, вы вызываете commit() или rollback(), в зависимости от успеха или неуспеха транзакции. В режиме автозавершения команда завершается, когда она выполнена, или выполняется следующая команда, в зависимости от того, что произойдет раньше. Команда, возвращающая ResultSet, выполнена, когда извлечена последняя строка или закрыт объект ResultSet. Если команда возвращает множественные результирующие наборы, завершение происходит после извлечения последней строки последнего объекта ResultSet.

public void commit() throws SQLException
Этот метод делает постоянными изменения, произведенные всеми командами, связанными с данным соединением и выполненными вслед за последней командой завершения или отката транзакции. Использовать его следует только при отключенном автозавершении. Он не завершает изменения, сделанные командами, которые связаны с другими объектами Connection.

public String getCatalog() throws SQLException
public void setCatalog(String catalog) throws SQLException
Если драйвер поддерживает каталоги, то setCatalog() используется для выбора подпространства базы данных с заданным именем каталога. Если драйвер каталоги не поддерживает, запрос игнорируется.

public DatabaseMetaData getMetaData() throws SQLException
Класс DatabaseMetaData предоставляет методы, описывающие таблицы базы данных, поддержку SQL, хранимые процедуры и другие сведения, относящиеся к базе данных и данному Connection, которые не относятся непосредственно к выполнению команд и извлечению результирующих наборов. Метод создает экземпляр класса DatabaseMetaData для данного Connection.

public SQLWarning getWarnings() throws SQLException
Возвращает первое предупреждение из списка, связанного с данным объектом Connection.

3. Класс Statement

Класс представляет встроенную команду SQL и используется приложением для доступа к базе данных. При закрытии Statement автоматически закрываются все связанные с ним открытые объекты ResultSet .

Основные методы:

public void addBatch(String sql) throws SQLException
Добавляет заданную команду SQL к текущему пакету команд.

public void cancel() throws SQLException
В многопоточной среде с помощью этого метода можно потребовать прекращения всякой обработки, связанной с данным Statement. В этом смысле метод аналогичен методу stop() для объектов Thread.

public boolean execute(String sql) throws SQLException
public ResultSet executeQuery(String sql) throws SQLException
public int executeUpdate(String sql) throws SQLException
Выполняет Statement, передавая базе данных заданную SQL-строку. Первый метод, execute(), позволяет вам выполнить Statement, когда неизвестно заранее, является SQL-строка запросом или обновлением. Метод возвращает true, если команда создала результирующий набор.

Метод executeQuery() используется для выполнения запросов (на извлечение данных). Он возвращает для обработки результирующий набор.

Метод executeUpdate() используется для выполнения обновлений. Он возвращает количество обновленных строк.

public int[ ] executeBatch(String sql) throws SQLException
Посылает базе данных пакет SQL-команд для выполнения. Возвращает массив чисел, описывающих количество строк, затронутых каждой командой SQL.

public ResultSet getResultSet() throws SQLException
Метод возвращает текущий ResultSet. Для каждого результата его следует вызывать только однажды. Его не нужно вызывать после обращения к executeQuery(), возвращающему единственный результат.

public void close() throws SQLException
Вручную закрывает объект Statement. Обычно этого не требуется, так как Statement автоматически закрывается при закрытии связанного с ним объекта Connection. К сожалению, не все разработчики JDBC-драйверов придерживаются этих конвенций, так что настоятельно советую закрывать вручную, как это показано в примере.

4. Класс ResultSet

Этот класс представляет результирующий набор базы данных. Он обеспечивает приложению построчный доступ к результатам запросов в базе данных. Во время обработки запроса ResultSet поддерживает указатель на текущую обрабатываемую строку. Приложение последовательно перемещается по результатам, пока они не будут все обработаны или не будет закрыт ResultSet.

Основные методы:

public boolean absolute(int row) throws SQLException
Метод перемещает курсор на заданное число строк от начала, если число положительно, и от конца - если отрицательно.

public void afterLast() throws SQLException
Этот метод перемещает курсор в конец результирующего набора за последнюю строку.

public void beforeFirst() throws SQLException
Этот метод перемещает курсор в начало результирующего набора перед первой строкой.

public void deleteRow() throws SQLException
Удаляет текущую строку из результирующего набора и базы данных.

public ResultSetMetaData getMetaData() throws SQLException
Предоставляет объект метаданных для данного ResultSet. Класс ResultSetMetaData содержит информацию о результирующие таблице, такую как количество столбцов, их заголовок и т.д.

public int getRow() throws SQLException
Возвращает номер текущей строки.

public Statement getStatement() throws SQLException
Возвращает экземпляр Statement, который произвел данный результирующий набор.

public boolean next() throws SQLException
public boolean previous() throws SQLException
Эти методы позволяют переместиться в результирующем наборе на одну строку вперед или назад. Во вновь созданном результирующем наборе курсор устанавливается перед первой строкой, поэтому первое обращение к методу next() влечет позиционирование на первую строку. Эти методы возвращают true, если остается строка для дальнейшего перемещения. Если строк для обработки больше нет, возвращается false. Если открыт поток InputStream для предыдущей строки, он закрывается. Также очищается цепочка предупреждений SQLWarning.

public void close() throws SQLException
Осуществляет немедленное закрытие ResultSet вручную. Обычно этого не требуется, так как закрытие Statement, связанного с ResultSet, автоматически закрывает ResultSet. К сожалению, не все разработчики JDBC-драйверов придерживаются этих конвенций, например, драйвер Oracle самостоятельно не закрывает ResultSet'ы, так что настоятельно советую закрывать вручную, как это показано в примере.

Читайте также: