Как определить, поддерживает ли драйвер JDBC PreparedStatement? - PullRequest
0 голосов
/ 04 апреля 2019

Есть ли способ программно определить, поддерживает ли конкретный драйвер JDBC PreparedStatement, не вызывая executeQuery () и перехватывая исключение «не реализовано»?

1 Ответ

1 голос
/ 05 апреля 2019

Любой совместимый драйвер JDBC должен реализовывать подготовленный оператор.Если у вас есть драйвер, который не поддерживает подготовленные операторы, формально он не является драйвером JDBC (даже если он реализует (частично) JDBC API).

Поскольку спецификация JDBC требует поддержки подготовленных операторов,в API нет ничего, чтобы проверить, поддерживаются ли они.Свяжитесь с продавцом / автором этого драйвера и скажите, что подготовленные заявления не являются обязательными.К сожалению, это означает, что вы не можете обнаружить это, пока не выполните.

Кроме того, я был бы весьма удивлен, если бы любой драйвер, не поддерживающий подготовленные операторы, позволил бы подготовить операторы, но только потерпел неудачу во время выполнения.Для меня это предполагает, что подготовленные операторы поддерживаются (иначе почему бы просто не завершиться неудачей, когда вызывается Connection.prepareStatement), но то, что вы делаете, не поддерживается (например, вызов executeQuery(String) вместо executeQuery()).

...