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


Основными элементами для успешного подключения являются:

1. Строка подключения JDBC (например: jdbc:mysql://localhost:3306/test).

2. Имя пользователя (root).

3. Пароль (root).

4. База данных с некоторым количеством таблиц (например, база данных книг).

Строка подключения для MySQL начинается с jdbc:mysql. Это название протокола соединения, за которым следуют хост и порт подключения, на которых запущена база данных. В случае использования локального компьютера в качестве сервера базы данных это localhost с портом по умолчанию 3306. Следующая часть – test – имя базы данных, которая уже существует в MySQL. Если база данных еще не создана, то используйте следующие операторы:

 

CREATE DATABASE `test` CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE TABLE `books` (

`id` int(11) NOT NULL,

`name` varchar(50) NOT NULL,

`author` varchar(50) NOT NULL,

PRIMARY KEY (`id`)

)

INSERT INTO test.books (id, `name`, author)

VALUES (1, 'Effective Java', 'Joshua Bloch');

INSERT INTO test.books (id, `name`, author)

VALUES (2, 'Java Concurrency in Practice', 'Brian Goetz');

 

Важно помнить о том, что необходимо закрывать соединение, запросы и результат выполнения после завершения работы с ними. Также важно закрывать их в finally-блоке, со своей try/catch оберткой, поскольку сам метод close() может кинуть исключение, что приведет к утечке ресурсов.

 

package java_mysql_example;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

/**

* Простой пример Java программы для соединения с MySQL базой

*/

public class JavaToMySQL {

 

// JDBC URL, имя пользователя и пароль MySQL сервера

private static final String url = "jdbc:mysql://localhost:3306/test";

private static final String user = "root";

private static final String password = "root";

 

// JDBC переменные для открытия и управления соединением

private static Connection con;

private static Statement stmt;

private static ResultSet rs;

 

public static void main(String args[]) {

String query = "select count(*) from books";

 

try {

// открываем соединение к MySQL серверу

con = DriverManager.getConnection(url, user, password);

 

// получаем Statement объект для выполнения запроса

stmt = con.createStatement();

 

// выполняем SELECT запрос

rs = stmt.executeQuery(query);

 

while (rs.next()) {

int count = rs.getInt(1);

System.out.println("Общее количество записей в таблице books: " + count);

}

 

} catch (SQLException sqlEx) {

sqlEx.printStackTrace();

} finally {

//закрываем соединение

try { con.close(); } catch(SQLException se) {

/*can't do anything */

}

try { stmt.close(); } catch(SQLException se) {

/*can't do anything */

}

try { rs.close(); } catch(SQLException se) {

/*can't do anything */

}

}

}

}

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

Total number of books in the table: 2

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

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

String query = "select id, name, author from books";

 

rs = stmt.executeQuery(query);

 

while (rs.next()) {

int id = rs.getInt(1);

String name = rs.getString(2);

String author = rs.getString(3);

System.out.printf("id: %d, name: %s, author: %s %n", id, name, author);

}

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

id: 1, name: Effective Java, author: Joshua Bloch

id: 2, name: Java Concurrency in Practice, author: Brian Goetz

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



Дата добавления: 2017-01-26; просмотров: 1684;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.011 сек.