sql
Determine if a database supports Scrollable ResultSets
With this example we are going to demonstrate how to determine if a database supports scrollable ResultSets. Values captured in an insentitive scrollable result set never change, even if changes are made to the table from which the data was retrieved, whereas a sensitive scrollable result set is one where the current values in the table are reflected in the result set. In short, to determine if a database supports scrollable ResultSets you should:
- Load the JDBC Driver, using the
forName(String className)
API method of the Class. In this example we use the MySQL JDBC driver. - Create a Connection to the database. Invoke the
getConnection(String url, String user, String password)
API method of the DriverManager to create the connection. - Create a DatabaseMetaData, using the
getMetaData()
API method of the Connection. The metadata includes information about the capabilities of this connection. - Check if the database supports scrollable ResultSets. Invoke the
supportsResultSetType(int type)
API method
of the DatabaseMetaData, for both TYPE_SCROLL_INSENSITIVE and TYPE_SCROLL_SENSITIVE types.
Let’s take a look at the code snippet that follows:
package com.javacodegeeks.snippets.core; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; public class DetermineScrollableResultSetSupport { public static void main(String[] args) { Connection connection = null; try { // Load the MySQL JDBC driver String driverName = "com.mysql.jdbc.Driver"; Class.forName(driverName); // Create a connection to the database String serverName = "localhost"; String schema = "test"; String url = "jdbc:mysql://" + serverName + "/" + schema; String username = "username"; String password = "password"; connection = DriverManager.getConnection(url, username, password); System.out.println("Successfully Connected to the database!"); } catch (ClassNotFoundException e) { System.out.println("Could not find the database driver " + e.getMessage()); } catch (SQLException e) { System.out.println("Could not connect to the database " + e.getMessage()); } try { DatabaseMetaData metadata = connection.getMetaData(); if (metadata.supportsResultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE)) { System.out.println("Insensitive scrollable result sets are supported"); } if (metadata.supportsResultSetType(ResultSet.TYPE_SCROLL_SENSITIVE)) { System.out.println("Sensitive scrollable result sets are supported"); } } catch (SQLException e) { System.out.println("Could not get database metadata " + e.getMessage()); } } }
Example Output:
Successfully Connected to the database!
Insensitive scrollable result sets are supported
This was an example of how to determine if a database supports scrollable ResultSets in Java.