Bazaprogram.ru

Новости из мира ПК
7 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Java подключение к mysql

Подключение базы данных MySql к Java приложению. Простой сайт на Java часть 3

Мы продолжаем писать простой сайт на языке Java и сегодня настало время подключить базу данных к нашему веб приложению. Подключать мы будем MySql базу данных, но схема будет работать для любой другой реляционной базы. Мы будем использовать jdbc драйвер для подключения. Он очень прост и понятен в обращении.

Хотя реальное приложение Вы скорее всего не будете подключать к базе данных через jdbc драйвер — этот пример даст Вам понимание как работать с базой данных.

Для начала откроем наше приложение в том виде, в котором мы его оставили с предыдущей статьи. Напомню, что мы подключили статические ресурсы и добавили внешний вид. Хочу сразу уточнить, что так приложение писать не нужно. Я имею ввиду такую последовательность. База данных — это основа всего приложения. С ее проектирования и нужно начинать. Я начал именно с ней, но выложил статьи в разной последовательности. О внешнем виде нужно думать в последнюю очередь.

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

Она очень примитивна и проста. Ее цель показать, как работать с такими вещами.

К стати говоря, создал эту схему я в MySql Workbench — это бесплатное приложение, в котором можно проектировать базу данных, а потом експортировать все это в код. В конце статьи есть подробное видео, где все это проделывается. Поэтому на это мы не будем тратить время.

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

Я намерено опускаю такие термины как EJB, JPA, Entity POJO, хотя мы используем или будем из использовать. Например классы-сущности, которые мы создадим для представления БД — это Entity. Дело в том, что на просторах Интернета есть очень много ресурсов, где все это четко излагается, но очень мало ресурсов, которые действительно показывают: как создать веб приложение с нуля и до запуска в сети Интернет. Я лично, когда начинал изучать веб для джава находил только отдельный статьи, в которых показывались отдельные части веб приложений. В нашей теме, если Вы будете идти от начало и до конца, то сможете написать самое простое, но полноценное приложение на Java, а уже когда начнете изучать все далее, эта практика поможет Вам изучать технологии и фреймворки легче.

Теперь к практике. Создайте в своем приложении новый пакет entity. Должна получиться такая структура:

Теперь в новом пакете нужно создать четыре класса: Article, Category, Role, Users имплементировать интерфейс Serializable для успешной передачи по сети. В видео ниже я использую Netbeans и его стандартные инструменты для генерации этих классов из базы данных. Но все же, я советую для начинающих сделать это вручную, чтобы Вы понимали где откуда берется. В каждом созданном классе нужно создать приватные поля, которые соответствуют названиям из базы данных. Для доступа к полям нужно создать геттеры и сеттеры. Для сравнения объекта нужно создать методы equals hashCode их можно с генерировать в еклипсе. Не плохо было бы добавить метод toString. Приведу пример на Article.

Вот, как выглядит наша таблица article в базе данных. Как видим у нее есть идентификатор id, поля title, body, которые будут хранить соответственно заголовок статьи и текст статьи. Есть поля category_id, users_id, которые будут хранить информацию о категории и пользователи соответственно. Эти поля — идентификаторы из таблиц category и users. Так нам и нужно построить класс Article:

Как использовать базу данных MySQL в Java

    Переводы, 24 июня 2015 в 13:46

В этой статье мы научимся подключаться к базе данных MySQL из Java-кода и выполнять простые запросы для получения и обновления данных. Для того, чтобы получить доступ к базе данных, мы будем использовать JDBC (Java Database Connectivity) API, который входит в стандартную библиотеку Java. JDBC позволяет подключиться к любой базе данных: Postgres, MySQL, SQL Server, Oracle и т. д. — при наличии соответствующей реализации драйвера, необходимого для подключения. Для базы данных MySQL мы будем использовать драйвер Type 4 JDBC из пакета mysql-connector-java-5.1.23-bin.jar . Он написан на чистой Java, а значит, нам не понадобятся какие-либо нативные библиотеки или ODBC-мост. Все, что нам надо будет сделать — это положить JAR-файл в директорию, содержащуюся в CLASSPATH. JAR-файл содержит класс com.mysql.jdbc.Driver , необходимый для подключения к MySQL. Если его не окажется в CLASSPATH, во время выполнения программы выбросится исключение java.lang.ClassNotFoundException , поэтому убедитесь, что вы правильно настроили пути.

Читать еще:  Ошибка autodesk installer

Кстати, если вы ищете хорошую книгу по использованию JDBC, обратите внимание на Practical Database Programming with Java (Ying Bai). Это относительно новая книга, и в ней рассматриваются две самые популярные базы данных: Oracle и SQL Server 2008. В книге используется IDE NetBeans для примеров и описываются все инструменты, необходимые для работы с базами данных в Java. Это отличная книга для начинающих и опытных программистов.

Подключаем базу данных MySQL с помощью JDBC

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

  1. Строка подключения JDBC (например: jdbc:mysql://localhost:3306/test ).
  2. Имя пользователя (root).
  3. Пароль (root).
  4. База данных с некоторым количеством таблиц для примера (например, база данных книг).

Строка подключения для MySQL начинается с jdbc:mysql . Это название протокола соединения, за которым следуют хост и порт подключения, на которых запущена база данных. В нашем случае это localhost с портом по умолчанию 3306 (если вы его не поменяли при установке). Следующая часть — test — имя базы данных, которая уже существует в MySQL. Мы можем создать таблицу Books :

и наполнить ее хорошими книгами:

Программа на Java, которая использует базу данных

Теперь давайте напишем программу на Java, которая будет подключаться к нашей базе данных, запущенной на localhost . Важно помнить о том, что необходимо закрывать соединение, запросы и результат выполнения после завершения работы с ними. Также важно закрывать их в finally-блоке, со своей try/catch оберткой, поскольку сам метод close() может кинуть исключение, что приведет к утечке ресурсов. За подробной информацией вы можете обратиться к этой статье. Кроме того, вы можете использовать обертку try-with-resource, которая появилась в Java 7. Более того, это стандартный способ работы с ресурсами в Java 1.7.

При первом запуске у вас, возможно, будет ошибка No suitable driver found for jdbc:mysql , если драйвера MySQL нет в CLASSPATH:

Добавим нужный JAR-файл в путь и снова запустим программу. Другая частая ошибка — указать таблицу в строке соединения: jdbc:mysql://localhost:3306/test/book . В этом случае вылетит следущее исключение:

Успешный запуск программы выведет на экран следующее:

Результат верный, поскольку у нас в таблице только две книги: «Effective Java» и «Java Concurrency in Practice».

Кстати, если у вас был драйвер при компиляции, но отсутствует при запуске, вы получите исключение java.lang.ClassNotFoundException: com.mysql.jdbc.Driver . О том, как исправить эту ошибку, вы можете прочитать здесь.

Получаем данные с помощью SELECT-запроса в JDBC

Для получения данных из БД вы можете выполнить SELECT-запрос. В первом примере мы уже его использовали, но получили только количество строк. Теперь мы вернем сами строки. Большая часть программы останется без изменений, за исключением SQL-запроса и кода, возвращающего данные из объекта ResultSet :

Этот код выведет на экран следующее:

Тут есть пара моментов, на которые следует обратить внимание. Метод rs.getInt(1) используется для получения столбца с целочисленным типом, в нашем случае это столбец «id». Индексы в JDBC начинаются с единицы, поэтому rs.getInt(1) вернет значение первого столбца как целое число. В случае, если вы укажете неверный индекс (многие разработчики вызывают rs.getInt(0) для получения первого столбца), выбросится исключение InvalidColumnIndexException . Доступ к столбцам по индексу чреват ошибками, поэтому лучше использовать имя столбца, например, rs.getInt(«id») . Подробнее об этом вы можете прочитать в этой статье. Метод getString() используется для получения строковых значений из базы (например, VARCHAR ). Цикл будет выполняться, пока rs.next() не вернет false . Это значит, что строки закончились. В нашем случае в таблице две строки, поэтому цикл выполнится два раза, выводя информацию о книгах из таблицы на экран.

Добавляем данные с помощью INSERT-запроса в JDBC

Добавление данных мало отличается от их получения: мы просто используем INSERT-запрос вместо SELECT-запроса и метод executeUpdate() вместо executeQuery() . Этот метод используется для запросов INSERT, UPDATE и DELETE, а также для SQL DDL выражений, таких как CREATE, ALTER или DROP. Эти команды не возвращают результата, поэтому мы убираем все упоминания ResultSet ‘а в коде и изменяем запрос соответственно:

После запуска программы вы можете проверить таблицу в СУБД. На этот раз вы увидите три записи в таблице:

Теперь вы умеете подключаться к MySQL из Java-приложения и выполнять SELECT, INSERT, DELETE и UPDATE-запросы так же, как и в MySQL GUI. Для подключения мы используем объект Connection , для чтения результатов запроса — ResultSet . Убедитесь перед подключением, что сервер MySQL запущен и mysql-connector-java-5.1.17-bin.jar находится в CLASSPATH, чтобы избежать ClassNotFoundException .

Читать еще:  Java security cert certpathvalidatorexception

Когда разберетесь с подключением и простыми запросами, имеет смысл изучить, как использовать подготавливаемые запросы (Prepared Statement) в Java для избежания SQL-инъекции. В боевом коде всегда следует использовать подготавливаемые запросы и связывание переменных.

Подключение Connection

Для соединения с БД необходимо использовать класс Connection пакета java.sql. После установления соединения можно выполнять различные SQL-запросы и получать результаты их обработки сервером. Приложение может открыть одно или несколько соединений с одной или несколькими различными СУБД.

Открытие соединения, getConnection

Стандартный способ установления соединения — это вызов метода getConnection класса DriverManager. Методу getConnection необходимо передать строку URL (Uniform Resource Locator). Стандарт подключения к серверу базы данных позволяет использовать следующие методы getConnection с параметрами:

При использовании первого варианта, все параметры подключения указываются в url.

В следующей таблице представлен JDBC driver и синтаксис строки URL для подключения к СУБД.

СУБДДрайвер JDBCURL
Oracleoracle.jdbc.OracleDriverjdbc:oracle:oci[OCI_VERSION]:@[HOST_NAME]
Oracleoracle.jdbc.OracleDriverjdbc:oracle:thin:@ [HOST_NAME]:[PORT_NUMBER]:[DATABASE_NAME]
MSSQLcom.microsoft.jdbc.sqlserver.SQLServerDriverjdbc:microsoft:sqlserver: //[HOST_NAME]:[PORT_NUMBER]
PostgreSQLorg.postgresql.Driverjdbc:postgresql: //[HOST_NAME]:[PORT_NUMBER] /[DATABASE_NAME]
MySQLcom.mysql.jdbc.Driverjdbc:mysql://[HOST_NAME]:[PORT_NUMBER] /[DATABASE_NAME]

Подключение к СУБД Oracle, jdbc oracle

К серверу БД Oracle можно подключиться как через тонкий клиент, так и через толстый.

Пример подключения через тонкий клиент:

При подключении через толстый клиент, host и port не указываются :

Подключение к СУБД MS SQL, jdbc sql

Строка URL-адреса подключения имеет следующий вид:

  • jdbc:sqlserver:// — обязательно, подпротокол.
  • serverName — необязательно, адресом сервера, с которым выполняется соединение. Это может быть DNS, IP-адрес, локальный узел или 127.0.0.1 локального компьютера. Имя сервера необходимо указать в коллекции свойств, если оно не указано в URL-адресе соединения.
  • instanceName — необязательно, наименование базы данных сервера, с которым выполняется соединение. Подключение выполняется к базе данных по умолчанию, если не указана другая.
  • portNumber — необязательно, порт, который слушает сервер. Значение по умолчанию — 1433. Если соединение выполняется с портом по умолчанию, то в URL-адресе необязательно указывать порт.

Дополнительные свойства указывается в формате ключ=значение.

Примеры установления соединения с сервером БД

Подключение к СУБД PostgreSQL, jdbc postgresql

Для подключения к серверу БД PostgreSQL необходимо использовать один из следующих URL:

host — имя сервера, по умолчанию «localhost».

port — порт, который слушает сервер. По умолчанию используется порт 5432.

database — наименование базы данных. По умолчанию используется база данных postgres.

Подключение Java к базе данных MySQL

Как вы подключаетесь к базе данных MySQL в Java?

Когда я пытаюсь, я получаю

13 Ответов

Вот пошаговое объяснение, как установить MySQL и JDBC и как его использовать:

Загрузите и установите сервер MySQL . Просто сделай это обычным способом. Запомните номер порта, когда бы вы его ни изменили. Это по умолчанию 3306 .

Загрузите драйвер JDBC и поместите его в classpath, извлеките файл ZIP и поместите содержащий файл JAR в classpath. Специфичный для поставщика драйвер JDBC является конкретной реализацией JDBC API (учебник здесь ).

Если вы используете IDE, например Eclipse или Netbeans, то вы можете добавить его в classpath, добавив файл JAR как библиотеку в путь сборки в свойствах проекта.

Если вы делаете это «plain vanilla» в командной консоли, то вам нужно указать путь к файлу JAR в аргументе -cp или -classpath при выполнении вашего приложения Java.

. просто там, чтобы добавить текущий каталог к classpath, а также так, чтобы он мог найти com.example.YourClass и ; является разделителем classpath, как это происходит в Windows. В Unix и клонах : следует использовать.

Создайте базу данных в MySQL . Давайте создадим базу данных javabase . Вы, конечно же, хотите мирового господства, поэтому давайте также использовать UTF-8.

Создайте пользователя для Java и предоставьте ему доступ . Просто потому, что использование root -это плохая практика.

Да, java -это имя пользователя, а password -пароль здесь.

Определите JDBC URL . Для подключения базы данных MySQL с помощью Java вам потребуется JDBC URL в следующем синтаксисе:

hostname : имя хоста, на котором установлен сервер MySQL. Если он установлен на той же машине, где вы запускаете код Java, то вы можете просто использовать localhost . Это также может быть адрес IP, например 127.0.0.1 . Если вы столкнулись с проблемами подключения и использование 127.0.0.1 вместо localhost решило эту проблему, то у вас есть проблема в конфигурации network/DNS/hosts.

port : порт TCP / IP, на котором слушает сервер MySQL. Это значение по умолчанию 3306 .

databasename : имя базы данных, к которой вы хотите подключиться. Это javabase .

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

Проверьте подключение к MySQL с помощью Java . Создайте простой класс Java с методом main() для проверки соединения.

Читать еще:  Internal exception java nio channels closedchannelexception

Если вы получаете SQLException: No suitable driver , то это означает, что либо драйвер JDBC вообще не был загружен автоматически, либо что JDBC URL ошибается (т. е. он не был распознан ни одним из загруженных драйверов). Обычно драйвер JDBC 4.0 должен быть загружен автоматически, когда вы просто бросаете его в runtime classpath. Чтобы исключить одно и другое, вы всегда можете вручную загрузить его, как показано ниже:

Обратите внимание, что вызов newInstance() здесь не нужен. Это просто чтобы починить старый и глючный org.gjt.mm.mysql.Driver . Объяснение здесь . Если эта строка выдает ClassNotFoundException , то файл JAR, содержащий класс драйвера JDBC, просто не помещается в classpath.

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

Если вы получаете SQLException: Connection refused или Connection timed out или MySQL специфический CommunicationsException: Communications link failure , то это означает, что DB вообще не доступен. Это может иметь одну или несколько из следующих причин:

  1. IP-адрес или имя хоста в JDBC URL-это неправильно.
  2. Имя хоста в JDBC URL не распознается локальным DNS сервером.
  3. Номер порта отсутствует или неверно указан в JDBC URL.
  4. Сервер DB не работает.
  5. Сервер DB не принимает соединения TCP/IP.
  6. DB сервер исчерпал все соединения.
  7. Что-то среднее между Java и DB блокирует соединения, например брандмауэр или прокси-сервер.

Чтобы решить ту или иную проблему, следуйте следующим советам:

  1. Проверьте и протестируйте их с помощью ping .
  2. Обновите DNS или используйте адрес IP в JDBC URL вместо этого.
  3. Проверьте его на основе my.cnf из MySQL ДБ.
  4. Запустите DB.
  5. Проверьте, запущен ли mysqld без —skip-networking option .
  6. Перезагрузите DB и исправьте свой код соответственно тому, что он закрывает соединения в finally .
  7. Отключите брандмауэр и/или настройте брандмауэр/прокси, чтобы разрешить / перенаправить порт.

Обратите внимание, что закрытие Connection чрезвычайно важно. Если вы не закрываете соединения и продолжаете получать их много в течение короткого времени, то база данных может закончиться подключениями и ваше приложение может сломаться. Всегда приобретайте значение Connection в операторе try-with-resources . Или, если вы еще не на Java 7, явно закройте его в finally блока try-finally . Закрытие в finally — это просто для того, чтобы убедиться, что он также будет закрыт в случае исключения. Это также относится к Statement , PreparedStatement и ResultSet .

Вот и все, что касается подключения к интернету. Здесь вы можете найти более подробное руководство по загрузке и хранению полноценных объектов модели Java в базе данных с помощью базового класса DAO.

Использование шаблона Singleton для соединения DB-плохой подход. См. среди прочих вопросов: http://stackoverflow.com/q/9428573/ . Это ошибка #1 стартеров.

DriverManager -это довольно старый способ делать вещи. Лучший способ-получить DataSource , либо поискать тот, который уже настроен для вас в контейнере сервера приложений:

или создать экземпляр и настроить его непосредственно из драйвера базы данных:

а затем получить от него соединения, как и выше:

Инициализация констант базы данных

Создайте постоянные свойства базы данных имя пользователя, пароль, URL и драйверы, ограничение опроса и т.д.

Инициализация соединения и свойств

После того, как соединение установлено, его лучше хранить для повторного использования.

Создание Свойств

Объект свойства содержит информацию о соединении, проверьте, установлено ли оно уже.

Подключение базы данных

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

Отключите базу данных

Как только вы закончите работу с базой данных, просто закройте соединение.

Все вместе

Используйте этот класс MysqlConnect непосредственно после изменения имени базы данных, имени пользователя и пароля и т.д.

Как пользоваться?

Инициализируйте класс базы данных.

Где-то еще в вашем коде .

Это все 🙂 если что-то улучшить, отредактируйте его! Надеюсь, это будет полезно.

Вот самый минимум, который вам нужен, чтобы получить данные из базы данных MySQL:

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

MySQL JDBC связь с useSSL.

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

вам нужно иметь mysql разъем jar в вашем classpath.

в Java JDBC API делает все с базами данных. используя JDBC, мы можем написать Java приложений к
1. Отправка запросов или обновление SQL до DB(любая реляционная база данных) 2. Извлечение и обработка результатов из DB

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

Ссылка на основную публикацию
Adblock
detector