Драйвер Java JDBC и TYPE_FORWARD_ONLY

Как я могу определить, есть ли драйвер JDBC TYPE_FORWARD_ONLY ? В моей программе пользователь настраивает параметры подключения к базе данных, и он может использовать любой драйвер JDBC в пути к классам. Я хочу знать, есть ли драйвер, TYPE_FORWARD_ONLY прежде чем выполнять какие-либо инструкции. Это возможно?

Ответов (4)

Решение

DatabaseMetaData имеет метод supportsResultSetType (тип int), который вы можете использовать, чтобы проверить, поддерживает ли ResultSet TYPE_FORWARD_ONLY .

Есть драйверы, которые не поддерживают прокрутку? Не могли бы вы привести пример? Что возвращает такой драйвер, когда вы пытаетесь создать Statement / ResultSet со значением SCROLL_SENSITIVE, а затем запрашиваете тип? Нравится:

Connection con = ...;
Statement statement = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ...);
System.out.println(statement.getResultSetType());

Вы можете получить DriverPropertyInfo из драйвера, хотя я не могу найти конкретную спецификацию jdbc, которая описывает, что должен возвращать драйвер. В этой ссылке может быть больше.

При запросе типа результирующего набора. Например:

Statement stmt = con.createStatement(
 ResultSet.TYPE_FORWARD_ONLY,
 ResultSet.CONCUR_UPDATABLE
);
ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2");
System.out.println(
 "Is Type Forward Only: " + 
 (rs.getType() == ResultSet.TYPE_FORWARD_ONLY)
);