Connecting JdbcRowSet with a Predefined Connection Object

This section describes how to connect a JdbcRowSet object to a database server with a predefined connection object.

Another way to connect a JdbcRowSet object to a database server is to pass a predefined connection object to the JdbcRowSetImpl constructor. Here is a sample sequence of method calls:

// Create a Connection object
  Connection con = DriverManager.getConnection("connection_url");

// Creating a JdbcRowSet object with a connection object
  JdbcRowSet jrs = new JdbcRowSetImpl(con);

// Provide a SQL statement for future use
  jrs.setCommand("SQL_statement");

// Create a connnection using DriverManager
// Execute the SQL statement
  jrs.execute();

Here is a sample program that connects a JdbcRowSet object to MySQL server with a predefined connection object:

/* MySqlRowSetConnectionObject.java
 * Copyright (c) HerongYang.com. All Rights Reserved.
 */
import java.sql.*;
import javax.sql.rowset.RowSetProvider;
import javax.sql.rowset.JdbcRowSet;
public class MySqlRowSetConnectionObject {
  public static void main(String [] args) {
    Connection con = null;
    try {

// Create a Connection object
      con = DriverManager.getConnection(
        "jdbc:mysql://localhost:3306/HerongDB?"
        + "user=Herong&password=TopSecret&serverTimezone="+tzid);

// Pass the Connection object to the new JdbcRowSet object
      javax.sql.rowset.JdbcRowSet jrs
        = new com.sun.rowset.JdbcRowSetImpl(con);

// Set a SQL statement
      jrs.setCommand("SELECT 'Hello world!'");

// Connect and run the statement
      jrs.execute();

// Get the result
      jrs.next();
      System.out.println("Result: "+jrs.getString(1));

// Close resources
      jrs.close();
      con.close();
    } catch (Exception e) {
      System.err.println("Exception: "+e.getMessage());
    }
  }
}

Try to compile it with JDK 13, I got an error:

herong> javac -cp .:mysql-connector-java.jar \
   MySqlRowSetConnectionObject.java

MySqlRowSetConnectionObject.java:19: error: package com.sun.rowset is not
  visible
    = new com.sun.rowset.JdbcRowSetImpl(con);
                     ^
(package com.sun.rowset is declared in module java.sql.rowset, which
does not export it)

Too bad, the com.sun.rowset.JdbcRowSetImpl class is hiding inside the java.sql.rowset module now since JDK 9. Passing a predefined connection object to the JdbcRowSetImpl constructor is not an option anymore.

The above program works fine with JDK 8:

herong> javac MySqlRowSetConnectionObject.java

MySqlRowSetConnectionObject.java:19: warning: JdbcRowSetImpl is
internal proprietary API and may be removed in a future release
        = new com.sun.rowset.JdbcRowSetImpl(con);

herong> java -cp .:mysql-connector-java-5.1.36-bin.jar \
   MySqlRowSetConnectionObject

Result: Hello world!

Table of Contents

 About This Book

 JDBC (Java Database Connectivity) Introduction

 JDK (Java SE) Installation

 MySQL Installation on Windows

 MySQL JDBC Driver (MySQL Connector/J)

 MySQL - PreparedStatement

MySQL - Reference Implementation of JdbcRowSet

 Overview of RowSet Objects

 Connecting JdbcRowSet to Database Servers

 Sun Implementation of JdbcRowSet API

 Connecting JdbcRowSet with a Connection URL

Connecting JdbcRowSet with a Predefined Connection Object

 Connecting JdbcRowSet with a Predefined ResultSet Object

 Connecting JdbcRowSet with JNDI Directory Service

 JdbcRowSet Query Statement with Parameters

 Inserting Rows with JdbcRowSet Objects

 MySQL - JBDC CallableStatement

 MySQL CLOB (Character Large Object) - TEXT

 MySQL BLOB (Binary Large Object) - BLOB

 Using Connection Pool with JDBC

 Archived Tutorials

 References

 Full Version in PDF/EPUB