Example: Removing values from a table through another statement's cursor
This Java™ example shows how to remove values from a table through another statement's cursor.
Note: By using the code examples, you agree to the terms of the Code license and disclaimer information.
import java.sql.*;
public class UsingPositionedDelete {
public Connection connection = null;
public static void main(java.lang.String[] args) {
UsingPositionedDelete test = new UsingPositionedDelete();
test.setup();
test.displayTable();
test.run();
test.displayTable();
test.cleanup();
}
/**
Handle all the required setup work.
**/
public void setup() {
try {
// Register the JDBC driver.
Class.forName("com.ibm.db2.jdbc.app.DB2Driver");
connection = DriverManager.getConnection("jdbc:db2:*local");
Statement s = connection.createStatement();
try {
s.executeUpdate("DROP TABLE CUJOSQL.WHERECUREX");
} catch (SQLException e) {
// Ignore problems here.
}
s.executeUpdate("CREATE TABLE CUJOSQL.WHERECUREX ( " +
"COL_IND INT, COL_VALUE CHAR(20)) ");
for (int i = 1; i <= 10; i++) {
s.executeUpdate("INSERT INTO CUJOSQL.WHERECUREX VALUES(" + i + ", 'FIRST')");
}
s.close();
} catch (Exception e) {
System.out.println("Caught exception: " + e.getMessage());
e.printStackTrace();
}
}
/**
In this section, all the code to perform the testing should
be added. If only one connection to the database is needed,
the global variable 'connection' can be used.
**/
public void run() {
try {
Statement stmt1 = connection.createStatement();
// Update each value using next().
stmt1.setCursorName("CUJO");
ResultSet rs = stmt1.executeQuery ("SELECT * FROM CUJOSQL.WHERECUREX " +
"FOR UPDATE OF COL_VALUE");
System.out.println("Cursor name is " + rs.getCursorName());
PreparedStatement stmt2 = connection.prepareStatement
("DELETE FROM " + " CUJOSQL.WHERECUREX WHERE CURRENT OF " +
rs.getCursorName ());
// Loop through the ResultSet and update every other entry.
while (rs.next ()) {
if (rs.next())
stmt2.execute ();
}
// Clean up the resources after they have been used.
rs.close ();
stmt2.close ();
} catch (Exception e) {
System.out.println("Caught exception: ");
e.printStackTrace();
}
}
/**
In this section, put all clean-up work for testing.
**/
public void cleanup() {
try {
// Close the global connection opened in setup().
connection.close();
} catch (Exception e) {
System.out.println("Caught exception: ");
e.printStackTrace();
}
}
/**
Display the contents of the table.
**/
public void displayTable()
{
try {
Statement s = connection.createStatement();
ResultSet rs = s.executeQuery ("SELECT * FROM CUJOSQL.WHERECUREX");
while (rs.next ()) {
System.out.println("Index " + rs.getInt(1) + " value " + rs.getString(2));
}
rs.close ();
s.close();
System.out.println("-----------------------------------------");
} catch (Exception e) {
System.out.println("Caught exception: ");
e.printStackTrace();
}
}
}