Zoeken…


Invoering

De API voor het gebruik van een relationele database van Java is JDBC.

Deze API wordt geïmplementeerd door een JDBC-stuurprogramma.

Om het te gebruiken, plaatst u het JAR-bestand met het stuurprogramma op het JAVA-klassepad.

Deze documentatie toont voorbeelden van het gebruik van het JDBC-stuurprogramma om verbinding te maken met een database.

Opmerkingen

JDBC-URL

De JDBC-URL kan een van deze vormen aannemen:

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

    host standaard ingesteld op localhost , port naar 5432.
    Als host een IPv6-adres is, moet dit tussen vierkante haakjes staan.
    De standaarddatabasenaam is dezelfde als de naam van de verbindende gebruiker.

    Om failover te implementeren, is het mogelijk om meerdere host [: port ] -items gescheiden door een komma te hebben.
    Ze worden op hun beurt geprobeerd totdat een verbinding slaagt.

  • jdbc:postgresql: database [ parameters ]

  • jdbc:postgresql:/[ parameters ]

    Deze formulieren zijn voor verbindingen met localhost .

parameters is een lijst met key [= value ] -paren, geleid door ? en gescheiden door & . Als de value ontbreekt, wordt aangenomen dat deze true .

Een voorbeeld:

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

Referenties

Verbinding maken met java.sql.DriverManager

Dit is de eenvoudigste manier om verbinding te maken.

Eerst moet het stuurprogramma worden geregistreerd bij java.sql.DriverManager zodat het weet welke klasse moet worden gebruikt.
Dit wordt gedaan door de stuurprogrammaklasse te laden, meestal met 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);
}

Niet dat gebruiker en wachtwoord kunnen ook worden opgenomen in de JDBC-URL, in welk geval u deze niet hoeft op te geven in de getConnection methode getConnection .

Verbinding maken met java.sql.DriverManager en eigenschappen

In plaats van het specificeren van verbinding parameters zoals gebruiker en wachtwoord (zie een volledige lijst hier ) in de URL of een aparte parameters, kunt u ze verpakken in een java.util.Properties object:

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

Verbinding maken met javax.sql.DataSource met behulp van een verbindingspool

Het is gebruikelijk om javax.sql.DataSource te gebruiken met JNDI in applicatieservercontainers, waar u een gegevensbron onder een naam registreert en javax.sql.DataSource wanneer u een verbinding nodig hebt.

Dit is code die laat zien hoe gegevensbronnen werken:

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

Nadat u een gegevensbron hebt gemaakt door deze functie aan te roepen, zou u deze als volgt gebruiken:

/* 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow