zoukankan      html  css  js  c++  java
  • 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 + "
    Cause: " + 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: 
    	"
                        + 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

  • 相关阅读:
    HTML页面之间跳转传值
    Ajax之三种数据传输格式
    css选择器
    jQuery Validate
    正则表达式
    JSP的九大内置对象,七大动作指令,四个作用域,三个编译指令
    Zooeeper之paxos算法
    ZooKeeper之选举(fastleaderelection算法)
    ZooKeeper之ZAB协议
    ZooKeeper之三阶段提交(3PC)
  • 原文地址:https://www.cnblogs.com/farewell-farewell/p/6642500.html
Copyright © 2011-2022 走看看