import java.sql.*;

public class ResultTest {
    static String server     = "localhost";
    static String db         = "TST";
    static String user       = "DBA";
    static String password   = "DBA";

  public static void main (String[] args){

    String url = "jdbc:sapdb://" + server + "/"+ db;

    try {
      Class.forName("com.sap.dbtech.jdbc.DriverSapDB");
      Connection connect = DriverManager.getConnection(url, user, password);
      connect.setAutoCommit(true);

      // Driver information
      DatabaseMetaData meta = connect.getMetaData();
      System.out.println("Driver version: " + meta.getDriverVersion());

      // Creating table for test
      System.out.println("Creating table 'RESULTTEST'");
      try {
        connect.createStatement().executeUpdate("DROP TABLE RESULTTEST");
      } catch (SQLException e){}

      connect.createStatement().executeUpdate(
        "CREATE TABLE RESULTTEST(ID INTEGER NOT NULL, CONTENT VARCHAR(128) NOT NULL)");

      // Inserting data
      PreparedStatement pstmt = connect.prepareStatement(
        "INSERT INTO RESULTTEST(ID, CONTENT) VALUES (?, ?)");
      for ( int i=1; i<=10; i++ ) {
        pstmt.setInt(1, i);
        pstmt.setString(2, "Inserted Row: " + i);
        pstmt.executeUpdate();
      }
      pstmt.close();

      // Selecting data
      System.out.println("Selecting data.");
      Statement stmt = connect.createStatement(
        ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
      ResultSet rs = stmt.executeQuery(
        "SELECT ID, CONTENT FROM RESULTTEST ORDER BY ID");

      if ( rs.first() ) {
        System.out.println("Updating row: 1");
        rs.updateString(2, "UPDATED");
        rs.updateRow();
      } else {
        System.out.println("No result found!");
        System.exit(1);
      }

      System.out.println("Inserting row");
      rs.moveToInsertRow();
      rs.updateInt(1, 11);
      rs.updateString(2, "Row: 11");
      rs.insertRow();

      //rs.refreshRow();                // This doesn't work

      System.out.println("============================================");
      rs.beforeFirst();
      while ( rs.next() ) {
        System.out.println(rs.getObject(1) + "\t|" + rs.getObject(2));
      }

      // Dropping table
      System.out.println("Dropping table 'RESULTTEST'");
      connect.createStatement().executeUpdate(
       "DROP TABLE RESULTTEST");

      connect.close();

    } catch (Throwable  t){
      t.printStackTrace();
    }

  }

}


