Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

DriverManager.getConnection()

Открывает соединение с базой данных по JDBC-адресу.

Доступно с: Java 1.1

Синтаксис

public static Connection getConnection(String url, String user, String password) throws SQLException

Параметры

ПараметрТипОписание
urlStringАдрес базы вида jdbc:postgresql://host:5432/db или jdbc:sqlite:shop.db.
userStringИмя пользователя (необязательно — есть вариант только с url).
passwordStringПароль.

Возвращаемое значение

ConnectionОткрытое соединение, которое нужно закрыть.

Примеры

Соединение с базой SQLite в памяти. Примеры запускаются с драйвером в classpath: java --enable-native-access=ALL-UNNAMED -cp sqlite-jdbc-3.53.4.0.jar Main.java:

import java.sql.*;
 
void main() throws SQLException {
    try (Connection conn = DriverManager.getConnection("jdbc:sqlite::memory:")) {
        IO.println(conn.getMetaData().getDatabaseProductName());
        IO.println(conn.isClosed());
    }
}

Результат:

SQLite
false

Создание таблицы и простые запросы через Statement:

import java.sql.*;
 
void main() throws SQLException {
    try (Connection conn = DriverManager.getConnection("jdbc:sqlite::memory:");
         Statement st = conn.createStatement()) {
        st.executeUpdate("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)");
        int added = st.executeUpdate("INSERT INTO users (name) VALUES ('Anna'), ('Oleg')");
        IO.println("Added: " + added);
 
        try (ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM users")) {
            rs.next();
            IO.println("Total: " + rs.getInt(1));
        }
    }
}

Результат:

Added: 2
Total: 2

Если драйвера нужной базы нет в classpath:

import java.sql.*;
 
void main() throws SQLException {
    DriverManager.getConnection("jdbc:postgresql://localhost:5432/shop", "app", "secret");
}

Результат:

Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/shop

Примечания

JDBC находится в модуле java.sql, поэтому нужен import java.sql.*;. Драйвер конкретной базы — отдельная библиотека: org.postgresql:postgresql, com.mysql:mysql-connector-j, org.xerial:sqlite-jdbc; он регистрируется сам, как только оказывается в classpath. Соединение — дорогой ресурс: закрывайте его через try с ресурсами, а в веб-приложениях берите соединения из пула (HikariCP). Пароль не пишут в код — читают из переменной окружения.

См. также

  • PreparedStatement — Заранее подготовленный SQL-запрос с параметрами ?. Защищает от SQL-инъекций.
  • ResultSet — Результат SELECT-запроса: курсор, который по одной перебирает строки таблицы.
  • Connection.setAutoCommit() — Включает или выключает автофиксацию. С false несколько запросов объединяются в транзакцию: commit() или rollback().
  • try-with-resources — Блок `try`, который сам закрывает открытые ресурсы — файлы, соединения, потоки.

Вопросы и ответы по теме

В учебнике

  • Основы JDBC — Работа с базой данных из Java через JDBC — что такое драйвер, подключение DriverManager.getConnection, Statement для команд SQL и чтение строк через ResultSet на примере SQLite.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.