Examples: Common Operations
Example 1: Creating a Database Connection, Creating a Table, and Inserting Data
This example illustrates how to develop applications based on GaussDB JDBC APIs. Before executing the example, load the driver. For details about how to obtain and load the driver, see JDBC Package, Driver Class, and Environment Class.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
//DBtest.java // This example illustrates the main processes of JDBC-based development, covering database connection creation, table creation, and data insertion. // There will be security risks if the username and password used for authentication are directly written into code. It is recommended that the username and password be stored in the configuration file or environment variables (the password must be stored in ciphertext and decrypted when being used) to ensure security. // In this example, the username and password are stored in environment variables. Before running this example, set environment variables EXAMPLE_USERNAME_ENV and EXAMPLE_PASSWORD_ENV in the local environment (set the environment variable names based on the actual situation). import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import java.sql.CallableStatement; import java.sql.Types; public class DBTest { // Create a database connection. public static Connection GetConnection(String username, String passwd) { String driver = "org.postgresql.Driver"; String sourceURL = "jdbc:postgresql://$ip:$port/postgres"; Connection conn = null; try { // Load the database driver. Class.forName(driver).newInstance(); } catch (Exception e) { e.printStackTrace(); return null; } try { // Create a database connection. conn = DriverManager.getConnection(sourceURL, username, passwd); System.out.println("Connection succeed!"); } catch (Exception e) { e.printStackTrace(); return null; } return conn; }; // Run a common SQL statement to create table customer_t1. public static void CreateTable(Connection conn) { Statement stmt = null; try { stmt = conn.createStatement(); // Run a common SQL statement. int rc = stmt .executeUpdate("CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));"); stmt.close(); } catch (SQLException e) { if (stmt != null) { try { stmt.close(); } catch (SQLException e1) { e1.printStackTrace(); } } e.printStackTrace(); } } // Run a prepared statement to insert data in batches. public static void BatchInsertData(Connection conn) { PreparedStatement pst = null; try { // Generate a prepared statement. pst = conn.prepareStatement("INSERT INTO customer_t1 VALUES (?,?)"); for (int i = 0; i < 3; i++) { // Add parameters. pst.setInt(1, i); pst.setString(2, "data " + i); pst.addBatch(); } // Perform batch processing. pst.executeBatch(); pst.close(); } catch (SQLException e) { if (pst != null) { try { pst.close(); } catch (SQLException e1) { e1.printStackTrace(); } } e.printStackTrace(); } } // Run a prepared statement to update data. public static void ExecPreparedSQL(Connection conn) { PreparedStatement pstmt = null; try { pstmt = conn .prepareStatement("UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1"); pstmt.setString(1, "new Data"); int rowcount = pstmt.executeUpdate(); pstmt.close(); } catch (SQLException e) { if (pstmt != null) { try { pstmt.close(); } catch (SQLException e1) { e1.printStackTrace(); } } e.printStackTrace(); } } // Create a stored procedure. public static void CreateCallable(Connection conn) { Statement stmt = null; try { stmt = conn.createStatement(); // Create a function to return the sum of the three input values. stmt.execute("create or replace procedure testproc \n" + "(\n" + " psv_in1 in integer,\n" + " psv_in2 in integer,\n" + " psv_inout inout integer\n" + ")\n" + "as\n" + "begin\n" + " psv_inout := psv_in1 + psv_in2 + psv_inout;\n" + "end;\n" + "/"); } catch (SQLException e) { throw new RuntimeException(e); } finally { if (stmt != null) { try { stmt.close(); } catch (SQLException e) { throw new RuntimeException(e); } } } } // Run a stored procedure. public static void ExecCallableSQL(Connection conn) { CallableStatement cstmt = null; try { // The stored procedure TESTPROC must be created in advance. cstmt=conn.prepareCall("{? = CALL TESTPROC(?,?,?)}"); cstmt.setInt(2, 50); cstmt.setInt(1, 20); cstmt.setInt(3, 90); cstmt.registerOutParameter(4, Types.INTEGER); // Register an OUT parameter of the integer type. cstmt.execute(); int out = cstmt.getInt(4); // Obtain the OUT parameter. System.out.println("The CallableStatment TESTPROC returns:"+out); cstmt.close(); } catch (SQLException e) { if (cstmt != null) { try { cstmt.close(); } catch (SQLException e1) { e1.printStackTrace(); } } e.printStackTrace(); } } /** * Main process. Call static methods one by one. * @param args */ public static void main(String[] args) { // Create a database connection. String userName = System.getenv("EXAMPLE_USERNAME_ENV"); String password = System.getenv("EXAMPLE_PASSWORD_ENV"); Connection conn = GetConnection(uesrName, password); // Create a table. CreateTable(conn); // Insert data in batches. BatchInsertData(conn); // Run a prepared statement to update data. ExecPreparedSQL(conn); // Create a stored procedure. CreateCallable(conn); // Run a stored procedure. ExecCallableSQL(conn); // Close the connection to the database. try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } |
Example 2: High Client Memory Usage
In this example, setFetchSize adjusts the memory usage of the client by using the database cursor to obtain server data in batches. It may increase network interaction and damage some performance.
The cursor is valid within a transaction. Therefore, disable automatic commit and then manually commit the code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
// Disable automatic commit. conn.setAutoCommit(false); // Create a table. Statement st = conn.createStatement(); st.execute("create table mytable (cal1 int);"); // Insert 200 rows of data into the table. PreparedStatement pstm = conn.prepareStatement("insert into mytable values (?)"); for (int i = 0; i < 200; i++) { pstm.setInt(1, i + 1); pstm.addBatch(); } pstm.executeBatch(); conn.commit(); pstm.close(); // Open the cursor and obtain 50 rows of data each time. st.setFetchSize(50); ResultSet rs = st.executeQuery("SELECT * FROM mytable"); while (rs.next()) { System.out.print("a row was returned."); } conn.commit(); rs.close(); // Disable the server cursor. st.setFetchSize(0); rs = st.executeQuery("SELECT * FROM mytable"); while (rs.next()) { System.out.print("many rows were returned."); } conn.commit(); rs.close(); // Close the statement. st.close(); conn.close(); |
Enable automatic commit.
conn.setAutoCommit(true);
Example 3: Using Common Data Types
// Example of the bit type. Note that the value range of the bit type is [0,1]. Statement st = conn.createStatement(); String sqlstr = "create or replace function fun_1()\n" + "returns bit AS $$\n" + "select col_bit from t_bit limit 1;\n" + "$$\n" + "LANGUAGE SQL;"; st.execute(sqlstr); CallableStatement c = conn.prepareCall("{ ? = call fun_1() }"); // Register the output type, which is a bit string. c.registerOutParameter(1, Types.BIT); c.execute(); // Use the Boolean type to obtain the result. System.out.println(c.getBoolean(1)); // Example of using the money type // Example of using a column of the money type in the table structure. st.execute("create table t_money(col1 money)"); PreparedStatement pstm = conn.prepareStatement("insert into t_money values(?)"); // Use PGobject to assign a value. The value range is [–92233720368547758.08,92233720368547758.07]. PGobject minMoney = new PGobject(); minMoney.setType("money"); minMoney.setValue("-92233720368547758.08"); pstm.setObject(1, minMoney); pstm.execute(); // Use PGMoney to assign a value. The value range is [–9999999.99,9999999.99]. pstm.setObject(1,new PGmoney(9999999.99)); pstm.execute(); // Example of using the function whose return value is money. st.execute("create or replace function func_money() " + "return money " + "as declare " + "var1 money; " + "begin " + " select col1 into var1 from t_money limit 1; " + " return var1; " + "end;"); CallableStatement cs = conn.prepareCall("{? = call func_money()}"); cs.registerOutParameter(1,Types.DOUBLE); cs.execute(); cs.getObject(1);
Example 4: Obtaining the Driver Version
Driver.getGSVersion();
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot