суббота, 21 января 2017 г.

Пример работы с JDBC

Отличный расписанный пример работы с базой данных.


Copy Source | Copy HTML
  1. import java.sql.*;
  2. import java.util.logging.*;
  3. public class JDBCtest {
  4.     public static void main(String[] args) {
  5.         Connection connection = null;
  6.         //URL к базе состоит из протокола:подпротокола://[хоста]:[порта_СУБД]/[БД] и других_сведений
  7.         String url = "jdbc:postgresql://127.0.0.1:5432/test";
  8.         //Имя пользователя БД
  9.         String name = "user";
  10.         //Пароль
  11.         String password = "123456";
  12.         try {
  13.             //Загружаем драйвер
  14.             Class.forName("org.postgresql.Driver");
  15.             System.out.println("Драйвер подключен");
  16.             //Создаём соединение
  17.             connection = DriverManager.getConnection(url, name, password);
  18.             System.out.println("Соединение установлено");
  19.             //Для использования SQL запросов существуют 3 типа объектов:
  20.             //1.Statement: используется для простых случаев без параметров
  21.             Statement statement = null;
  22.             statement = connection.createStatement();
  23.             //Выполним запрос
  24.             ResultSet result1 = statement.executeQuery(
  25.                     "SELECT * FROM users where id >2 and id <10");
  26.             //result это указатель на первую строку с выборки
  27.             //чтобы вывести данные мы будем использовать 
  28.             //метод next() , с помощью которого переходим к следующему элементу
  29.             System.out.println("Выводим statement");
  30.             while (result1.next()) {
  31.                 System.out.println("Номер в выборке #" + result1.getRow()
  32.                         + "\t Номер в базе #" + result1.getInt("id")
  33.                         + "\t" + result1.getString("username"));
  34.             }
  35.             // Вставить запись
  36.             statement.executeUpdate(
  37.                     "INSERT INTO users(username) values('name')");
  38.             //Обновить запись
  39.             statement.executeUpdate(
  40.                     "UPDATE users SET username = 'admin' where id = 1");
  41.             //2.PreparedStatement: предварительно компилирует запросы, 
  42.             //которые могут содержать входные параметры
  43.             PreparedStatement preparedStatement = null;
  44.             // ? - место вставки нашего значеня
  45.             preparedStatement = connection.prepareStatement(
  46.                     "SELECT * FROM users where id > ? and id < ?");
  47.             //Устанавливаем в нужную позицию значения определённого типа
  48.             preparedStatement.setInt(1, 2);
  49.             preparedStatement.setInt(2, 10);
  50.             //выполняем запрос
  51.             ResultSet result2 = preparedStatement.executeQuery();
  52.             System.out.println("Выводим PreparedStatement");
  53.             while (result2.next()) {
  54.                 System.out.println("Номер в выборке #" + result2.getRow()
  55.                         + "\t Номер в базе #" + result2.getInt("id")
  56.                         + "\t" + result2.getString("username"));
  57.             }
  58.             preparedStatement = connection.prepareStatement(
  59.                     "INSERT INTO users(username) values(?)");
  60.             preparedStatement.setString(1, "user_name");
  61.             //метод принимает значение без параметров
  62.             //темже способом можно сделать и UPDATE
  63.             preparedStatement.executeUpdate();
  64.             //3.CallableStatement: используется для вызова хранимых функций,
  65.             // которые могут содержать входные и выходные параметры
  66.             CallableStatement callableStatement = null;
  67.             //Вызываем функцию myFunc (хранится в БД)
  68.             callableStatement = connection.prepareCall(
  69.                     " { call myfunc(?,?) } ");
  70.             //Задаём входные параметры
  71.             callableStatement.setString(1, "Dima");
  72.             callableStatement.setString(2, "Alex");
  73.             //Выполняем запрос
  74.             ResultSet result3 = callableStatement.executeQuery();
  75.             //Если CallableStatement возвращает несколько объектов ResultSet,
  76.             //то нужно выводить данные в цикле с помощью метода next
  77.             //у меня функция возвращает один объект
  78.             result3.next();
  79.             System.out.println(result3.getString("MESSAGE"));
  80.             //если функция вставляет или обновляет, то используется метод executeUpdate()
  81.         } catch (Exception ex) {
  82.             //выводим наиболее значимые сообщения
  83.             Logger.getLogger(JDBCtest.class.getName()).log(Level.SEVERE, null, ex);
  84.         } finally {
  85.             if (connection != null) {
  86.                 try {
  87.                     connection.close();
  88.                 } catch (SQLException ex) {
  89.                     Logger.getLogger(JDBCtest.class.getName()).log(Level.SEVERE, null, ex);
  90.                 }
  91.             }
  92.         }
  93.     }
  94. }

Оригинал статьи: статья

Комментариев нет:

Отправить комментарий