postgreSQL连接 java接口

1.下载PostgreSQL JDBC驱动:

    http://jdbc.postgresql.org/download.html

2. 新建一个java项目,导入下载的jar包Add External JARs

3. 连接代码如下:

import java.sql.*;
import java.io.*;
import java.util.StringTokenizer;
import java.util.Properties;
import java.util.Random;

/**
 * Class <b>DBWrapper</b> contains 
 * wrapper routines for using JDBC
 * to access the database.
 *
 * @author luwei
 * @version 1.0
 */
public class DBWrapper
{
    
    private static int CONNECTION_RETRIES = 10;
    private static int QUERY_RETRIES = 10;
    
    private String dbUrl;
    private String username;
    private String password;
    private String jdbcClassName;
    private Connection dbCon;    

    private boolean hasError = false;
    private String errorString = null;
    private static DBWrapper myInstance = null;
    
    /**
     * DBWrapper constructor
     */
    public DBWrapper() {}

    /**
     * DBWrapper conscrutor
     * @param inUrl String url of database
     * @param inJdbcClassName String containing name of jdbc driver
     * @param inUserName String containing database username
     * @param inPassWord String containing database password
     */

    public DBWrapper( String inUrl, String inJdbcClassName, String inUserName, String inPassWord )
    throws Exception {
        dbUrl = inUrl;
        jdbcClassName = inJdbcClassName;
        username = inUserName;
        password = inPassWord;
        connect();
    }
    
    /**
     * connectAsDefaultCteLibrary()
     * Create a connection to the CTE library using the default connection parameters.
     * @return void
     */
    public void connectAsDefaultDatabase()
    throws Exception {
        myInstance.connect("jdbc:postgresql://localhost:5432/postgres",
                "org.postgresql.Driver", "postgres", "741613551");

    }

    /**
     * closeConnections closes any currently open connections
     * @return void
     */
    private void closeConnections() 
    throws Exception {
        if (dbCon!=null) {
            dbCon.close();
        }
    }
    
    /**
     * DBWrapper Instance()
     * Get a singleton instance of the DBWrapper object.
     * @return DBWrapper
     */
    public static DBWrapper Instance() 
    throws Exception {
        if (myInstance == null) {
            myInstance = new DBWrapper();
            myInstance.connectAsDefaultDatabase();
        }
        return myInstance;
    }

    /**
     * boolean connect()
     * Connect to a database using the parameters supplied in the constructor.
     * @return boolean
     */
    private boolean connect() 
    throws Exception {
    
        boolean opened = false;

        DriverManager.registerDriver(new org.postgresql.Driver());
        // Try to open a connection the database.
        int retry = 0; 
        while(retry++ < CONNECTION_RETRIES){
            Class.forName(jdbcClassName);
            dbCon = DriverManager.getConnection(dbUrl,username,password);
            break;
            }
        if(retry < CONNECTION_RETRIES)opened=true;
        return opened;
    }

    
    /**
     * boolean connect()
     * Connect to a JDBC datasource without using the parameters supplied in the constructor.
     * @param inUrl String url of database
     * @param inJdbcClassName String containing name of jdbc driver
     * @param inUserName String containing database username
     * @param inPassWord String containing database password
     * @return boolean
     */
    public boolean connect( String inUrl, String inJdbcClassName, String inUserName, String inPassWord ) 
    throws Exception {
        dbUrl = inUrl;
        jdbcClassName = inJdbcClassName;
        username = inUserName;
        password = inPassWord;
        closeConnections();
    
        return connect();
    }
    
    /**
     * ResultSet runQuery()
     * Executes a query and returns a resultset.  
     *
     * @param String containing a SQL statement
     * @return ResultSet
     */
    public ResultSet runQuery( String sqlQuery ) 
    throws Exception {
        Statement statement=dbCon.createStatement();
        ResultSet resultSet=statement.executeQuery(sqlQuery);
        return resultSet;
    }
    
    /**
     * boolean runUpdate()
     * Executes an update and returns true of successfully executed.  
     *
     * @param String containing a SQL statement
     * @return boolean
     */    
    public boolean runUpdate( String sqlQuery ) 
    throws Exception {
        Statement ps=dbCon.createStatement();
        boolean wasExecuted = false;
        int retry = 0; 
        while(retry++ < CONNECTION_RETRIES){
            ps.executeUpdate(sqlQuery);
            break;
        }
        if(retry < CONNECTION_RETRIES)wasExecuted=true;
        
        
        return wasExecuted;
    }
    
    /**
     * ResultSet runChainedQuery()
     * Executes a chained mode transaction query.  
     *
     * @param <b>String</b> containing a SQL statement
     * @param <b>String</b> containing the isolation level to run the transaction.
     * @return ResultSet
     */  
    public ResultSet runChainedQuery( String sqlQuery, String isolationLevel ) 
    throws Exception {
    
        int retry = 0;
    
        //Create the resultset and statement object.
        ResultSet resultSet = null;
        Statement dbStatement = null;
        // Connect to the database.
        dbStatement = dbCon.createStatement();
        // Retry the query until complete or timeout.
        while (retry++ < QUERY_RETRIES) {
        // Begin a transaction.
        dbStatement.executeUpdate( "Begin Transaction" );
        // Set the isolation level.
        dbStatement.executeUpdate( new String( "Set Transaction Isolation level " + isolationLevel ) );
        // Execute the query.
        resultSet = dbStatement.executeQuery( sqlQuery );
        // Commit the transaction.
        dbStatement.executeUpdate( "commit" );
        // Close the connection.
        dbStatement.close();
        break;
        }
        return resultSet;
    }
    
    /**
     * boolean runChainedUpdate()
     * Executes a chained mode transaction query.  
     *
     * @param String[] containing a series of SQL statments
     * @param String containing the isolation level to run the transaction.
     * @return boolean
     */  
    public boolean runChainedUpdate( String [] sqlQuery, String isolationLevel ) 
    throws Exception {
        int retry = 0;
    
        // Create the statement object.
        Statement dbStatement = null;
        boolean wasExecuted = false;
        // Connect to the database.
        dbStatement = dbCon.createStatement();
    
        while (retry++ < QUERY_RETRIES) {
            // Begin a new transaction.
            try {
                dbStatement.executeUpdate( "Begin Transaction" );
                // Set the isolation level.
                dbStatement.executeUpdate( new String( "Set Transaction Isolation level " + isolationLevel ) );
                // For each sql statement, perform the update.
                for( int i=0; i<sqlQuery.length; i++ ) {
                dbStatement.executeUpdate( sqlQuery[i] );
                }
                // Commit the transaction and close.
                dbStatement.executeUpdate( "commit" );
                dbStatement.close();
                wasExecuted = true;
            } catch (Exception e) {
                errorString = new String( "Error executing: " + sqlQuery + "\nCause: " + e.toString() );
                hasError = true;
                // Rollback if an error has occured.
                dbStatement.executeUpdate( "rollback" );
                dbStatement.close();
            }
        }
        return wasExecuted;
    }
}

4. 测试代码

import java.sql.*;

public class DBConnectionTest {
    public static void main(String[] args) {
        /*
         * if(args.length < 3){
         * System.out.println("Syntax:DBConnection [url][username][password]");
         * //url = jdbc:postgresql:database or
         * jdbc:postgresql://host:port/database System.exit(-1); }
         */

        String url = "jdbc:postgresql://localhost:5432/postgres";
        String username = "postgres";
        String password = "741613551";
        String sql = "select sName from student";
        String s;

        try {
            System.out.println("Step 01: Registering JDBC Driver");

            /* There are three ways to registe driver. */
            // write your code here for Registering JDBC Driver
            // 先注册JDBC驱动 org.postgresql.Driver
            Class.forName("org.postgresql.Driver");
            System.out.println("Step 02: Establishing connection to: \n\t"
                    + url);

            // write your code here to get a connection
            // url = jdbc:postgresql:database or
            // jdbc:postgresql://host:port/database
            Connection conn = DriverManager.getConnection(url, username,
                    password);
            System.out.println("Step 03: Creating SQL statement.");

            // write your code here to create a SQL statement
            Statement state = conn.createStatement();
            System.out.println("Step 04: Executing SQL statement.");

            // write your code here to execute your SQL statement and recieve
            // the result
            ResultSet resultSet = state.executeQuery(sql);
            System.out.println("Step 05: Printing result.");

            // write your code here to print the result
            while (resultSet.next()) {
                System.out.println(resultSet.getString("sName"));
            }
            System.out.println("Step 06: Closing JDBC objects.");

            // write your code here to close all JDBC objects.

            resultSet.close();
            state.close();
            conn.close();
            System.out.println("End.");
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

5. JDBC教程:http://www.yiibai.com/jdbc/jdbc-introduction.html

 

posted @ 2017-04-05 20:26  Not-Bad  阅读(1901)  评论(0编辑  收藏  举报