通过JDBC执行SQL

    • 在linux服务器端源代码目录下执行build.sh,获得驱动jar包postgresql.jar,包位置在源代码目录下。从发布包中获取,包名为openGauss-x.x.x-操作系统版本号-64bit-Jdbc.tar.gz。

      驱动包与PostgreSQL保持兼容,其中类名、类结构与PostgreSQL驱动完全一致,曾经运行于PostgreSQL的应用程序可以直接移植到当前系统使用。

    • 驱动类

      在创建数据库连接之前,需要加载数据库驱动类“org.postgresql.Driver”。

    在创建数据库连接之前,需要先加载数据库驱动程序。

    加载驱动有两种方法:

    • 在代码中创建连接之前任意位置隐含装载:Class.forName(“org.postgresql.Driver”);
    • 在JVM启动时参数传递:java -Djdbc.drivers=org.postgresql.Driver jdbctest

      说明: 上述jdbctest为测试用例程序的名称。

    在创建数据库连接之后,才能使用它来执行SQL语句操作数据。

    函数原型

    JDBC提供了三个方法,用于创建数据库连接。

    • DriverManager.getConnection(String url);
    • DriverManager.getConnection(String url, Properties info);
    • DriverManager.getConnection(String url, String user, String password);

    参数

    表 1 数据库连接参数

    • 示例1:此示例将演示如何基于openGauss提供的JDBC接口连接数据库。

      1. public static Connection getConnect(String username, String passwd)
      2. {
      3. //驱动类。
      4. String driver = "org.postgresql.Driver";
      5. //数据库连接描述符。
      6. String sourceURL = "jdbc:postgresql://10.10.0.13:8000/postgres";
      7. Connection conn = null;
      8. try
      9. {
      10. //加载驱动。
      11. Class.forName(driver);
      12. }
      13. catch( Exception e )
      14. {
      15. e.printStackTrace();
      16. return null;
      17. }
      18. try
      19. {
      20. //创建连接。
      21. conn = DriverManager.getConnection(sourceURL, username, passwd);
      22. System.out.println("Connection succeed!");
      23. }
      24. catch(Exception e)
      25. {
      26. e.printStackTrace();
      27. return null;
      28. }
      29. return conn;
      30. };
      31. // 以下代码将使用Properties对象作为参数建立连接
      32. {
      33. //驱动类。
      34. String driver = "org.postgresql.Driver";
      35. //数据库连接描述符。
      36. String sourceURL = "jdbc:postgresql://10.10.0.13:8000/postgres?";
      37. Connection conn = null;
      38. Properties info = new Properties();
      39. try
      40. //加载驱动。
      41. Class.forName(driver);
      42. }
      43. catch( Exception e )
      44. {
      45. e.printStackTrace();
      46. return null;
      47. }
      48. try
      49. {
      50. info.setProperty("user", username);
      51. info.setProperty("password", passwd);
      52. //创建连接。
      53. conn = DriverManager.getConnection(sourceURL, info);
      54. System.out.println("Connection succeed!");
      55. }
      56. catch(Exception e)
      57. {
      58. e.printStackTrace();
      59. return null;
      60. }
      61. return conn;
    • 示例2:此示例将演示如何基于openGauss提供的JDBC接口开发应用程序。

      ``` //DBtest.java //演示基于JDBC开发的主要步骤,会涉及创建数据库、创建表、插入数据等。

      import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import java.sql.CallableStatement;

      public class DBTest {

      //创建数据库连接。 public static Connection GetConnection(String username, String passwd) {

      };

      //执行普通SQL语句,创建customer_t1表。 public static void CreateTable(Connection conn) {

      1. Statement stmt = null;
      2. try {
      3. stmt = conn.createStatement();
      4. //执行普通SQL语句。
      5. int rc = stmt
      6. .executeUpdate("CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));");
      7. stmt.close();
      8. } catch (SQLException e) {
      9. if (stmt != null) {
      10. try {
      11. stmt.close();
      12. } catch (SQLException e1) {
      13. e1.printStackTrace();
      14. }
      15. }
      16. e.printStackTrace();
      17. }

      }

      //执行预处理语句,批量插入数据。 public static void BatchInsertData(Connection conn) {

      }

      //执行预编译语句,更新数据。 public static void ExecPreparedSQL(Connection conn) {

      1. PreparedStatement pstmt = null;
      2. try {
      3. pstmt = conn
      4. .prepareStatement("UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1");
      5. pstmt.setString(1, "new Data");
      6. int rowcount = pstmt.executeUpdate();
      7. pstmt.close();
      8. } catch (SQLException e) {
      9. if (pstmt != null) {
      10. try {
      11. pstmt.close();
      12. } catch (SQLException e1) {
      13. e1.printStackTrace();
      14. }
      15. }
      16. }

      }