Postgres支持Java语言,但是通过Java数据库连接(JDBC)界面,在Postgres中使用Java更加容易。 以下是Java数据库连接性界面的介绍,并为您提供了一些入门的代码提示。
什么是PostgreSQL以及为什么再次变得很酷
PostgreSQL是一种非常流行的面向对象的关系数据库管理系统(RDBMS)。 它是开源且免费的,这使其在开发人员中非常受欢迎 。 该平台通过支持JSON来支持关系和非关系查询。 但是,Postgres的特征之一是它强调遵守SQL标准。 该数据库旨在处理从单台机器到数据仓库的各种工作负载 。
Postgres的主要功能包括:
- 与主要操作系统的兼容性 -支持Windows,Linux,Mac OS,Solaris。
- 主要的编程语言支持 -例如C / C ++,Phyton,Go和Java。
- 多版本并发控制 -这是Postgres的主要功能,它允许多个读取器和写入器同时访问和在同一个数据库中工作。
- 高度合规性-符合 SQL标准的169个功能。
- 动态社区-定期开发和发布扩展。
尽管PostgreSQL是市场上最古老的数据库系统之一,但在开发人员和数据库管理员中仍被列为最流行的数据库管理系统之一。 其受欢迎的一些原因是:
- 免费使用 -您可以存储不受限制的数据,而没有功能限制和分发限制。
- 避免供应商锁定-由于允许分发,因此有许多公司为Postgres提供服务,从而消除了供应商锁定。
- 可扩展 -Postgres社区利用简单的扩展功能几乎不断地向数据库添加功能。 这种灵活性使需要特定功能的用户可以为其编写扩展。
Postgres扩展使用户可以在不更改核心数据库的情况下适应他们的需求。 另外,一些很酷的PostgreSQL功能包括创建自己的数据类型和XML数据查询的功能。 流复制使postgres备份解决方案非常有吸引力。
PostgreSQL通过支持JavaScript对象符号(JSON)来运行NoSQL查询,该对象是用于存储和传输数据的轻量级格式。 Postgres通过Java数据库连接(JDBC)支持Java,该连接允许Java程序使用标准Java代码连接到PostgreSQL数据库 。 继续阅读以了解如何设置Postgres以使用Java。
设置PostgreSQL以使用Java
在开始在Java程序中使用PostgreSQL之前,我们需要在计算机上设置JDBC和Java。
- 从Postgres存储库下载并安装最新版本的Postgres JDBC 。
- 您应该将下载的.jar文件添加到类路径中,或者将其与-classpath选项一起使用。
- 必须将PostgreSQL服务器配置为允许TCP / IP连接 ,然后通过设置客户端身份验证来验证是否允许用户连接到服务器。
- 创建将通过JDBC访问的数据库需要对数据进行正确的编码,这意味着您应将UNICODE编码用作默认值,以避免出现差异。
初始化驱动程序意味着:
- 使用
import java.sql.*
导入JDBC ; - 加载驱动程序 -在新版本中,当应用程序连接到PostgreSQL时,JVM将加载驱动程序。
Postgresql Java Jdbc接口-它是什么和基本命令
如上所述,JDBC是Java的核心API ,它为兼容SQL的数据库(尤其是PostgreSQL)提供了标准接口。 我们介绍了如何设置JDBC驱动程序以及创建数据库时的一些注意事项。 但是,我们如何连接到现有数据库? 以下来自Codota代码库的Java代码示例演示了如何使用Amazon Web Services连接到postrgresql数据库实例 :
public void donothing() throws SQLException, ClassNotFoundException
{
Class.forName("org.postgresql.Driver");
String url = "jdbc:postgresql://localhost/test?user=fred&password=secret&ssl=true";
Connection conn = DriverManager.getConnection(url);
// Do stuff here
conn.close();
}
使用JDBC API从PostgreSQL数据库中的表查询数据
建立与PostgreSQL服务器的数据库连接后,您需要创建一个语句对象,该对象代表一个SQL语句。 共有三种Statement对象:
- 语句 -您可以实现不带参数的简单语句
- PreparedStatement —一个子类,您可以使用它将参数添加到SQL语句中。
- CallableStatement-您可以使用它来扩展用于执行存储过程的PreparedStatement。
创建Statement对象后,可以使用以下三种方法之一执行查询:
- Execute —如果查询的第一个对象是
ResultSet
对象,则此命令将返回true。 - executeQ uery-将仅返回一个
ResultSet
对象。 - executeUpdate —您可以对INSERT或DELETE之类的语句使用此方法,因为它返回受该语句影响的行数。
最后,您可以使用Java游标来调用ResultSet
对象的方法,然后使用try-with-resources语句。 这使您可以自动关闭所有三个对象( ResultSet
, Statement
和Connection
)。
建立表格
您可以使用以下Java程序在打开的数据库中创建表。
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class PostgreSQLJDBC {
public static void main( String args[] ) {
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager
.getConnection("jdbc:postgresql://localhost:5432/testdb",
"manisha", "123");
System.out.println("Opened database successfully");
stmt = c.createStatement();
String sql = "CREATE TABLE COMPANY " +
"(ID INT PRIMARY KEY NOT NULL," +
" NAME TEXT NOT NULL, " +
" AGE INT NOT NULL, " +
" ADDRESS CHAR(50), " +
" SALARY REAL)";
stmt.executeUpdate(sql);
stmt.close();
c.close();
} catch ( Exception e ) {
System.err.println( e.getClass().getName()+": "+ e.getMessage() );
System.exit(0);
}
System.out.println("Table created successfully");
}
}
程序被编译并执行后,将显示以下两行:
Opened database successfully
Table created successfully
使用java.sql.DriverManager 发现类似的代码片段示例 。 getConnection
插入操作
我们如何在桌子上创建记录
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class PostgreSQLJDBC {
public static void main(String args[]) {
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager
.getConnection("jdbc:postgresql://localhost:5432/testdb",
"manisha", "123");
c.setAutoCommit(false);
System.out.println("Opened database successfully");
stmt = c.createStatement();
String sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
+ "VALUES (1, 'Paul', 32, 'California', 20000.00 );";
stmt.executeUpdate(sql);
sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
+ "VALUES (2, 'Allen', 25, 'Texas', 15000.00 );";
stmt.executeUpdate(sql);
sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
+ "VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );";
stmt.executeUpdate(sql);
sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
+ "VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );";
stmt.executeUpdate(sql);
stmt.close();
c.commit();
c.close();
} catch (Exception e) {
System.err.println( e.getClass().getName()+": "+ e.getMessage() );
System.exit(0);
}
System.out.println("Records created successfully");
}
}
编译并执行上述程序后,它将在COMPANY表中创建给定记录,并显示以下两行。
Opened database successfully Records created successfully
使用JDBC PostgreSQL事务使用JDBC事务API。
当您不希望执行一条SQL语句(除非另一条语句完成)时,这很有用。 例如,插入新演员和该演员领导的电影。 使用事务,可以确保两个语句都生效或都不生效。
第一步是禁用自动提交模式,因为Postgres将每条语句都视为事务,并自动提交它。 因此,如果要隔离事务中的一个或多个语句,则第一步是禁用自动提交模式。 您可以通过以下命令setAutoCommit()
Connection的setAutoCommit()
方法:
conn.setAutoCommit(false);
如果要提交事务,则应调用Connection对象的commit方法:
conn.commit();
接下来,当您调用commit()
方法时,您将发现所有先前的语句作为一个单元一起提交。
回滚交易
有时,您没有得到您所期望的一项陈述的结果。 在这种情况下,可以使用Connection对象的rollback()
方法来中断当前事务,将值恢复为原始值。
conn.rollback();
您可以在此YouTube视频教程中了解更多信息
底线
设置PostgreSQL JDBC接口似乎很棘手。 但是,最新版本的PostgreSQL通过将驱动程序自动加载到JVM中,使安装过程非常简单。
使用专有的JDBC接口,使用Java代码在PostgreSQL上工作更加容易。 在本文中,我们向您简要介绍了如何安装界面和基本命令以开始使用。
From: https://blog.codota.com/how-to-set-up-postgresql-to-work-with-java/