2013-08-26 2 views
2

JDBC Во-первых, мой cconfig является:
Язык: ColdFusion 10 (и установленное обновление 11)
БД MS SQL Server 2012
Использование jtds JDBC (пробовал версии 1.2.6, 1.2.8 и 1.3.0)
Использование NVARCHAR cfsqltype в ColdFusion с jtds

У меня возникли проблемы с запущенными запросами, где я использую cfqueryparam с cfsqltype cf_sql_nvarchar. Проблема в том, что страница просто зависает. Если я смотрю журнал приложений ColdFusion, я вижу ошибку: «net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setNString (ILjava/lang/String;) V Конкретная последовательность файлов, включенных или обработанных, следующая:« follow по имени тестового файла.

Я запускаю очень простой запрос выбора в столбце nvarchar, но страница не загружается и эта ошибка регистрируется.

Я знаю, что это должно быть связано с jtds jdbc, как если бы я подключался через обычный SQL-драйвер, он будет работать отлично.

Так кто-нибудь испытал это раньше? Если да, то какова была твоя резолюция?

Благодаря

ответ

2

Я сделал быстрый поиск и результаты показывают jtds does not support setNString(). Я проверил источник драйвера для 1.3.1, и, как упоминалось in the comments here методы не реализован:

»..while getNString реализован код просто состоит из // TODO Автоматически сгенерированный метод окурок и бросить новые AbstractMethodError(); .. "

Так что, похоже, вам, возможно, потребуется использовать cf_sql_varchar, combined with the "String Format" setting, как в предыдущих версиях. Очевидно, что другой вариант - использовать другой драйвер (тот, который поддерживает setNString(), например, драйвер Adobe или MS SQL Server driver).

+0

Спасибо, это говорит о том, что я могу отказаться от своего поиска и ждать новой версии драйвера, но меня смущает то, почему у него нет этого, добавив его в драйвер, поскольку он уже делает это по умолчанию. Например, если я не устанавливаю sendStringParametersAsUnicode = false, тогда все параметры строки будут переданы как nvarchar. Это похоже на то, что у вас могут быть либо все строковые параметры nvarchar, либо все varchar, но никогда не для одной базы данных – seraph

+0

(Edit - я неправильно прочитал ваш ответ). Ну, к сожалению, да. Поскольку 'setNString' не реализован, флажок sendStringParametersAsUnicode all-or-nothing является единственным вариантом afaik. – Leigh

+0

Прохладный, спасибо за информацию – seraph

1

Попробуйте использовать cf_sql_varchar. cf_sql_nvarchar не является допустимым вариантом согласно Documentation и вы должны использовать cf_sql_varchar

+0

Скотт - К сожалению, этот раздел документации неверен (и так далее ;-). [New sqltype упоминается здесь] (http://help.adobe.com/en_US/ColdFusion/10.0/Developing/WSc3ff6d0ea77859461172e0811cbec0e02b-7ff3.html#WSe61e35da8d318518-9efe7cf1358680a71d-7ffe). – Leigh

+0

Как сказал Ли, они добавили его в CF10, но документация на самом деле не отражает это так. – seraph

+0

Не упоминать об этом в документах вообще. –