Szukaj…


Wprowadzenie

API do korzystania z relacyjnej bazy danych z Java to JDBC.

Ten interfejs API jest implementowany przez sterownik JDBC.

Aby go użyć, umieść plik JAR ze sterownikiem na ścieżce klasy JAVA.

Ta dokumentacja pokazuje przykłady używania sterownika JDBC do łączenia się z bazą danych.

Uwagi

JDBC URL

Adres URL JDBC może przybierać jedną z następujących postaci:

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

    domyślny host to localhost , port do 5432.
    Jeśli host jest adresem IPv6, musi być ujęty w nawiasy kwadratowe.
    Domyślna nazwa bazy danych jest taka sama jak nazwa łączącego się użytkownika.

    Aby zaimplementować tryb failover, możliwe jest oddzielenie kilku pozycji host [: port ] przecinkiem.
    Są one kolejno wypróbowywane, dopóki połączenie się nie powiedzie.

  • jdbc:postgresql: database [ parameters ]

  • jdbc:postgresql:/[ parameters ]

    Te formularze dotyczą połączeń z localhost .

parameters jest lista key [= value ] par key [= value ] , na czele z ? i oddzielone przez & . Jeśli brakuje value , przyjmuje się, że jest to true .

Przykład:

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

Bibliografia

Łączenie z java.sql.DriverManager

To najprostszy sposób na połączenie.

Najpierw należy zarejestrować sterownik w java.sql.DriverManager aby wiedział, której klasy użyć.
Odbywa się to poprzez załadowanie klasy sterownika, zwykle za pomocą 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);
}

Nie, że użytkownik i hasło mogą być również zawarte w adresie URL JDBC, w którym to przypadku nie trzeba ich podawać w getConnection metody getConnection .

Łączenie z java.sql.DriverManager i Właściwości

Zamiast określać parametry połączenia, takie jak użytkownik i hasło (zobacz pełną listę tutaj ) w adresie URL lub osobne parametry, możesz spakować je do obiektu 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);
}

Łączenie z javax.sql.DataSource za pomocą puli połączeń

Powszechnie używa się javax.sql.DataSource z JNDI w kontenerach serwera aplikacji, w których rejestrujesz źródło danych pod nazwą i wyszukujesz je, gdy potrzebujesz połączenia.

Ten kod pokazuje, jak działają źródła danych:

/**
 * 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;
}

Po utworzeniu źródła danych przez wywołanie tej funkcji można użyć go w następujący sposób:

/* 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow