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