Поиск…


Вступление

API для использования реляционной базы данных с Java - это JDBC.

Этот API реализован драйвером JDBC.

Чтобы использовать его, поместите JAR-файл с драйвером в путь класса JAVA.

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

замечания

URL JDBC

URL JDBC может принимать одну из следующих форм:

  • jdbc:postgresql:// host [: port ]/[ database ][ parameters ]

    host умолчанию - localhost , port - 5432.
    Если host является адресом IPv6, он должен быть заключен в квадратные скобки.
    Имя базы данных по умолчанию совпадает с именем подключаемого пользователя.

    Чтобы реализовать переход на другой ресурс, возможно наличие нескольких записей host [: port ] разделенных запятой.
    Они стараются в свою очередь, пока соединение не удастся.

  • jdbc:postgresql: database [ parameters ]

  • jdbc:postgresql:/[ parameters ]

    Эти формы предназначены для соединений с localhost .

parameters - это список key [= value ] пар key [= value ] , возглавляемых ? и разделяются символом & . Если value отсутствует, оно считается true .

Пример:

jdbc:postgresql://localhost/test?user=fred&password=secret&ssl&sslfactory=org.postgresql.ssl.NonValidatingFactory

Рекомендации

Подключение с помощью java.sql.DriverManager

Это самый простой способ подключения.

Во-первых, драйвер должен быть зарегистрирован с помощью java.sql.DriverManager чтобы он знал, какой класс использовать.
Это делается путем загрузки класса драйвера, как правило, с помощью java.lang.Class.forname( <driver class name> ) .

/**
 * Connect to a PostgreSQL database.
 * @param url the JDBC URL to connect to; must start with "jdbc:postgresql:"
 * @param user the username for the connection
 * @param password the password for the connection
 * @return a connection object for the established connection
 * @throws ClassNotFoundException if the driver class cannot be found on the Java class path
 * @throws java.sql.SQLException if the connection to the database fails
 */
private static java.sql.Connection connect(String url, String user, String password)
    throws ClassNotFoundException, java.sql.SQLException
{
    /*
     * Register the PostgreSQL JDBC driver.
     * This may throw a ClassNotFoundException.
     */
    Class.forName("org.postgresql.Driver");
    /*
     * Tell the driver manager to connect to the database specified with the URL.
     * This may throw an SQLException.
     */
    return java.sql.DriverManager.getConnection(url, user, password);
}

Не тот пользователь и пароль также могут быть включены в URL JDBC, и в этом случае вам не нужно указывать их в вызове метода getConnection .

Подключение с помощью java.sql.DriverManager и свойств

Вместо указания параметров соединения, таких как пользователь и пароль (см. Полный список здесь ) в URL-адресе или отдельных параметрах, вы можете упаковать их в объект java.util.Properties :

/**
 * Connect to a PostgreSQL database.
 * @param url the JDBC URL to connect to. Must start with "jdbc:postgresql:"
 * @param user the username for the connection
 * @param password the password for the connection
 * @return a connection object for the established connection
 * @throws ClassNotFoundException if the driver class cannot be found on the Java class path
 * @throws java.sql.SQLException if the connection to the database fails
 */
private static java.sql.Connection connect(String url, String user, String password)
    throws ClassNotFoundException, java.sql.SQLException
{
    /*
     * Register the PostgreSQL JDBC driver.
     * This may throw a ClassNotFoundException.
     */
    Class.forName("org.postgresql.Driver");
    java.util.Properties props = new java.util.Properties();
    props.setProperty("user", user);
    props.setProperty("password", password);
    /* don't use server prepared statements */
    props.setProperty("prepareThreshold", "0");
    /*
     * Tell the driver manager to connect to the database specified with the URL.
     * This may throw an SQLException.
     */
    return java.sql.DriverManager.getConnection(url, props);
}

Подключение с помощью javax.sql.DataSource с использованием пула соединений

Обычно используется javax.sql.DataSource с JNDI в контейнерах сервера приложений, где вы регистрируете источник данных под именем и просматриваете его, когда вам нужно соединение.

Это код, который показывает, как работают источники данных:

/**
 * Create a data source with connection pool for PostgreSQL connections
 * @param url the JDBC URL to connect to. Must start with "jdbc:postgresql:"
 * @param user the username for the connection
 * @param password the password for the connection
 * @return a data source with the correct properties set
 */
private static javax.sql.DataSource createDataSource(String url, String user, String password)
{
    /* use a data source with connection pooling */
    org.postgresql.ds.PGPoolingDataSource ds = new org.postgresql.ds.PGPoolingDataSource();
    ds.setUrl(url);
    ds.setUser(user);
    ds.setPassword(password);
    /* the connection pool will have 10 to 20 connections */
    ds.setInitialConnections(10);
    ds.setMaxConnections(20);
    /* use SSL connections without checking server certificate */
    ds.setSslMode("require");
    ds.setSslfactory("org.postgresql.ssl.NonValidatingFactory");

    return ds;
}

Как только вы создали источник данных, вызвав эту функцию, вы будете использовать ее следующим образом:

/* get a connection from the connection pool */
java.sql.Connection conn = ds.getConnection();

/* do some work */

/* hand the connection back to the pool - it will not be closed */
conn.close();


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow