JDBC for MySQL - Herong's Tutorial Examples - v3.13, by Herong Yang
Connecting JdbcRowSet with a Predefined ResultSet Object
This section describes how to connect a JdbcRowSet object to a database server with a predefined ResultSet object.
Another way to connect a JdbcRowSet object to a database server is to pass a predefined ResultSet object to the JdbcRowSetImpl constructor. Here is a sample sequence of method calls:
// Create a Connection object
Connection con = DriverManager.getConnection("connection_url");
// Execute a SQL statement to generate a Result object
Statement sta = con.createStatement();
ResultSet res = sta.executeQuery("SQL_statement");
// Creating a JdbcRowSet object with a connection object
JdbcRowSet jrs = new JdbcRowSetImpl(res);
// Ready to retrieve column values
jrs.next();
String val = jrs.getString(1)
Here is a sample program that connects a JdbcRowSet object to MySQL server with a predefined ResultSet object:
/* MySqlRowSetResultSet.java
* Copyright (c) HerongYang.com. All Rights Reserved.
*/
import java.sql.*;
public class MySqlRowSetResultSet {
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");
// Execute a SQL statement to generate a Result object
Statement sta = con.createStatement();
ResultSet res = sta.executeQuery("SELECT 'Hello world!'");
// Pass the Connection object to the new JdbcRowSet object
javax.sql.rowset.JdbcRowSet jrs
= new com.sun.rowset.JdbcRowSetImpl(res);
// Get the result
jrs.next();
System.out.println("Result: "+jrs.getString(1));
// Close resources
jrs.close();
res.close();
sta.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 \
MySqlRowSetResultSet.java
MySqlRowSetResultSet.java:21: error: package com.sun.rowset is not visible
= new com.sun.rowset.JdbcRowSetImpl(res);
^
(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 MySqlRowSetResultSet.java
MySqlRowSetResultSet.java:21: warning: JdbcRowSetImpl is internal
proprietary API and may be removed in a future release
= new com.sun.rowset.JdbcRowSetImpl(res);
^
herong> java -cp .:mysql-connector-java-5.1.36-bin.java \
MySqlRowSetResultSet
Result: Hello world!
Table of Contents
JDBC (Java Database Connectivity) Introduction
MySQL JDBC Driver (MySQL Connector/J)
►MySQL - Reference Implementation of JdbcRowSet
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