Executing queries through JDBC
To run a query through JDBC:
-
Connect with the Vertica database. See Creating and configuring a connection.
-
Run the query.
The method you use to run the query depends on the type of query you want to run:
-
a DDL query that does not return a result set.
-
a DDL query that returns a result set.
-
a DML query
Executing DDL (data definition language) queries
To run DDL queries, such as CREATE TABLE and COPY, use the Statement.execute()
method. You get an instance of this class by calling the createStatement
method of your connection object.
The following example creates an instance of the Statement
class and uses it to execute a CREATE TABLE and a COPY query:
Statement stmt = conn.createStatement();
stmt.execute("CREATE TABLE address_book (Last_Name char(50) default ''," +
"First_Name char(50),Email char(50),Phone_Number char(50))");
stmt.execute("COPY address_book FROM 'address.dat' DELIMITER ',' NULL 'null'");
Executing queries that return result sets
Use the Statement
class's executeQuery
method to execute queries that return a result set, such as SELECT. To get the data from the result set, use methods such as getInt
, getString
, and getDouble
to access column values depending upon the data types of columns in the result set. Use ResultSet.next
to advance to the next row of the data set.
ResultSet rs = null;
rs = stmt.executeQuery("SELECT First_Name, Last_Name FROM address_book");
int x = 1;
while(rs.next()){
System.out.println(x + ". " + rs.getString(1).trim() + " "
+ rs.getString(2).trim());
x++;
}
Note
The Vertica JDBC driver does not support scrollable cursors. You can only read forwards through the result set.Executing DML (data manipulation language) queries using executeUpdate
Use the executeUpdate
method for DML SQL queries that change data in the database, such as INSERT, UPDATE and DELETE which do not return a result set.
stmt.executeUpdate("INSERT INTO address_book " +
"VALUES ('Ben-Shachar', 'Tamar', 'tamarrow@example.com'," +
"'555-380-6466')");
stmt.executeUpdate("INSERT INTO address_book (First_Name, Email) " +
"VALUES ('Pete','pete@example.com')");
Note
The Vertica JDBC driver'sStatement
class supports executing multiple statements in the SQL string you pass to the execute
method. The PreparedStatement
class does not support using multiple statements in a single execution.
Executing stored procedures
You can create and execute stored procedures with CallableStatements.
To create a stored procedure:
Statement st = conn.createStatement();
String createSimpleSp = "CREATE OR REPLACE PROCEDURE raiseInt(IN x INT) LANGUAGE PLvSQL AS $$ " +
"BEGIN" +
"RAISE INFO 'x = %', x;" +
"END;" +
"$$;";
st.execute(createSimpleSp);
To call a stored procedure:
String spCall = "CALL raiseInt (?)";
CallableStatement stmt = conn.prepareCall(spCall);
stmt.setInt(1, 42);
Stored procedures do not yet support OUT parameters. Instead, you can return and retrieve execution information with RAISE and getWarnings() respectively:
System.out.println(stmt.getWarnings().toString());