java如何连接PostgreSQL 数据库,含代码和教程

打印 上一主题 下一主题

主题 925|帖子 925|积分 2775

下载 PostgreSQL JDBC 驱动

要从 Java 程序连接到 PostgreSQL 服务器,您需要 PostgreSQL JDBC 驱动。
您可以在 jdbc.postgresql.org 下载页面上下载最新版本的驱动。下载的文件是一个 jar 文件,例如postgresql-42.7.1.jar。
创建新项目

首先,启动 IntelliJ IDE。
接下来,创建一个名为sales的新项目。
然后,右键单击项目名称,并选择 Open Module Settings(打开模块设置)。
之后,选择 Project Settings(项目设置)下的 Libraries(库),并单击 New Project Library(新建项目库)。
最后,选择 PostgreSQL 数据库驱动文件,例如postgresql-42.7.1.jar。
创建数据库配置文件

首先,在项目标src目录中,创建一个名为db.properties文件的新文件。
其次,将连接参数添加到db.properties文件中:
  1. db.url=jdbc:postgresql://localhost:5432/sales
  2. db.username=Yourusername
  3. db.password=YourPassword
复制代码
config.properties中包罗了三个连接参数:
db.url:PostgreSQL 数据库服务器的 URL。在此示例中,我们连接到本地 PostgreSQL 服务器上的sales数据库,服务器的端口为 5432(默认端口)。
db.user:连接到数据库的用户帐户。
db.password:用户的暗码。
请留意,您需要将YourUsername和YourPassword替换为现实的值。
界说 DatabaseConfig 类

首先,在项目标src目录中,创建一个名为DatabaseConfig.java的新文件。
其次,在DatabaseConfig.java文件中,界说DatabaseConfig类:
  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.util.Properties;
  4. //获取配置文件的内容,并返回配置文件的信息
  5. public class DatabaseConfig {
  6.     private static final Properties properties = new Properties();
  7.     static {
  8.         try(InputStream inputStream = DatabaseConfig.class.getClassLoader().getResourceAsStream("jdbc_pg.properties")){
  9.             if (inputStream==null){
  10.                 System.out.println("Sorry, unable to find jdbc_pg.properties");
  11.                 System.exit(1);
  12.             }
  13.             properties.load(inputStream);
  14.         }catch (IOException e){
  15.             e.printStackTrace();
  16.         }
  17.     }
  18.     public static String getUrl(){
  19.         return properties.getProperty("jdbc.url");
  20.     }
  21.     public static String getUsername(){
  22.         return properties.getProperty("jdbc.username");
  23.     }
  24.     public static String getPassword(){
  25.         return properties.getProperty("jdbc.password");
  26.     }
  27. }
复制代码
该DatabaseConfig类负责从db.properties文件加载数据库配置。
该DatabaseConfig有三个静态方法,来公开数据库配置:
getDbUrl() – 返回数据库 URL。
getDbUsername() – 返回用户名。
getDbPassword() – 返回暗码。
创建 DB 类

首先,在项目标src目录中,创建一个名为DB.java文件的新文件。
其次,利用下面代码,界说DB类:
  1. import java.sql.*;
  2. public class DB {
  3.     //对数据库建立连接返回Connection对象
  4.     public static Connection connect() throws SQLException {
  5.         try {
  6.             var jdbUrl = DatabaseConfig.getUrl();
  7.             var jdbUsername = DatabaseConfig.getUsername();
  8.             var jdbPassword = DatabaseConfig.getPassword();
  9.             return DriverManager.getConnection(jdbUrl, jdbUsername, jdbPassword);
  10.         }catch (SQLException e){
  11.             System.err.println(e.getMessage());
  12.             return null;
  13.         }
  14.     }
  15.     //关闭资源
  16.     //关闭顺序:关闭资源时应遵循逆序的顺序,即先关闭ResultSet,然后是Statement或PreparedStatement,最后是Connection。这样可以防止资源泄漏。
  17.     public static void close(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet){
  18.         if (resultSet!=null){
  19.             try{
  20.                 resultSet.close();
  21.             }catch (SQLException e){
  22.                 e.printStackTrace();
  23.             }finally {
  24.                 if (preparedStatement!=null){
  25.                     try{
  26.                         preparedStatement.close();
  27.                     }catch (SQLException e){
  28.                         e.printStackTrace();
  29.                     }finally {
  30.                         if (connection!=null){
  31.                             try{
  32.                                 connection.close();
  33.                             }catch (SQLException e){
  34.                                 e.printStackTrace();
  35.                             }
  36.                         }
  37.                     }
  38.                 }
  39.             }
  40.         }
  41.     }
  42. }
复制代码
该DB类有一个静态方法connect()和close()。
connect()是连接到本地 PostgreSQL 服务器上的 sales 数据库。
connect()方法利用DatabaseConfig类加载连接参数,并利用DriverManager类的getConnection()方法建立与数据库的连接。
如果connect()方法成功建立了与 PostgreSQL 的连接,则返回一个Connection对象,否则返回 null。
如果在连接过程中发生任何SQLException异常,该connect()方法将显示异常的具体信息。
close()方法是为了关闭资源,关闭次序:关闭资源时应遵循逆序的次序,即先关闭ResultSet,然后是Statement或PreparedStatement,最后是connect。这样可以防止资源泄漏。
创建 Java 程序

首先,在项目标 src 目录中,创建Main.java文件。
其次,利用下面代码,在Main.java文件中界说Main类:
  1. import java.sql.SQLException;
  2. public class Main {
  3.     public static void main(String[] args) {
  4.         try (var connection =  DB.connect()) {
  5.             System.out.println("Connected to the PostgreSQL database.
  6. ");
  7.         } catch (SQLException e) {
  8.             System.err.println(e.getMessage());
  9.         }
  10.     }
  11. }
复制代码
Main类的main()函数,通过调用connect()方法,利用DB类连接到本地 PostgreSQL 服务器上的sales数据库。
如果成功建立连接,则显示一条消息,如果发生SQLException异常,则显示错误。
try-with-resources 语句确保即使发生异常也会自动关闭Connection。
如果您运行该程序并看到以下输出,则表现该程序已成功连接到 PostgreSQL 服务器:
  1. Connected to the PostgreSQL database.
复制代码
补充

在项目标 src 目录中,创建ExecuteDB .java文件。
其次,利用下面代码,在ExecuteDB .java文件中界说ExecuteDB 类:
  1. import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Arrays;import java.util.List;public class ExecuteDB {    public static void main(String[] args) {        String sql = "select id,username from public.user ft where id=1";        try(var connect = DB.connection()){            System.out.println("Connected to the PostgreSQL database.
  2. ");            PreparedStatement preparedStatement = connect.prepareStatement(sql);            ResultSet resultSet = preparedStatement.executeQuery();//            int rowCount = 0;            while (resultSet.next()){                System.out.println(resultSet.getRow());                String tnx_ref = resultSet.getObject("id").toString();                String customer_no =resultSet.getObject("username ").toString();                System.out.println("id:"+tnx_ref);                System.out.println("username :"+customer_no);//                rowCount++;            }//            System.out.println(rowCount);            //关闭资源            DB.close(connect,preparedStatement,resultSet);        }catch (SQLException e){            System.err.println(e.getMessage());        }    } }
复制代码

  1. import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Arrays;import java.util.List;public class ExecuteDB {//main 方法调用自己的getDBData()实验sql    public static void main(String[] args) {        String sql = "select id,username from public.user ft where id=1";        //打印数组里面的元素需要用到Arrays类中的toString方法                 System.out.println(Arrays.toString(ExecuteDB.getDBData(sql)));    }    //这个方法是静态方法,外部调用不需要再创建对象,直接用类名.方法()访问    //这个方法返回的是一个数组    public static String[] getDBData(String sql){        int i = 2;        String[] result = new String[i];        try(var connect = DB.connection()){  //1.创建连接,若连接成功就实验下面语句            System.out.println("Connected to the PostgreSQL database.
  2. ");            //2.创建语句,预编制语句对象创建PreparedStatement            PreparedStatement preparedStatement = connect.prepareStatement(sql);            //CRUD            //3.1 实验语句__查询语句            ResultSet resultSet = preparedStatement.executeQuery();            //3.2 实验语句__Update 语句,如:INSERT,UPDATE,DELETE/SQL DDL.//            ResultSet resultSet2 = preparedStatement.executeUpdate();            //4.处理结果            while (resultSet.next()){                String tnx_ref = resultSet.getObject("id").toString();                String customer_no =resultSet.getObject("username ").toString();//                System.out.println("tnx_ref:"+id);//                System.out.println("customer_no:"+username );                result[0] = tnx_ref;                result[1] = customer_no;            }            //5.关闭资源            DB.close(connect,preparedStatement,resultSet);        }catch (SQLException e){   //创建连接失败则抛出下面异常            System.err.println(e.getMessage());        }        return result;    }}
复制代码
ExecuteDB类就是整合了上面全部方法,终极实验sql获取sql的返回数据。
参考来源:https://www.rockdata.net/zh-cn/tutorial/java-setup/

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

灌篮少年

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表