JDBC ODBC и 4D Database: при чтении строки первый пробел столбца не отправляется

Я использую удаленную базу данных 4D v11 и драйвер ODBC 4D в Windows для доступа и чтения данных. Проблема связана с некоторыми строками таблицы: в этих строках есть столбцы, начинающиеся с пробела. Это предназначено.

Мое Java-приложение должно извлекать эти столбцы с их первым символом пробела. Но это не работает.

Драйвер ODBC 4D работает нормально. Тестируя его с помощью Microsoft Query в Excel, читая таблицу, столбцы имеют свой первый символ пробела.

В моей Java-программе я использую драйвер JDBC ODBC (jdk 1.7.0_51). Инструкции или классы open(), Statement, execute() и ResultSet являются стандартными JDBC. К сожалению, первый пробел никогда не извлекается при чтении.

Столбец виден как CLOB:

int myColumnWithFirstSpace = 5;
ResultSetMetaData rsmd = rs.getMetaData();
String type = rsmd.getColumnTypeName(myColumnWithFirstSpace );
System.out.println(type); // print CLOB

Единственным поддерживаемым классом является String:

String text= rs.getString(myColumnWithFirstSpace);
// other types return "Operation not yet supported"
System.out.println(text); // print the content of the column

И, к сожалению, в печатном тексте нет первого пробела. Где может быть ошибка? Спасибо!


person jack-y    schedule 04.03.2014    source источник


Ответы (1)


Мне удалось воссоздать вашу проблему с помощью моста JDBC-ODBC и драйвера ODBC Microsoft SQL Server.

  • При получении значения nvarchar с начальным пробелом как из C#, так и из VBA с помощью драйвера ODBC для SQL Server начальный пробел сохраняется.
  • Получение того же значения из Java с помощью драйвера JDBC SQL Server также сохранило начальный пробел.
  • Однако получение этого значения из Java через JDBC-ODBC Bridge приводит к удалению начального пробела.

Итак, похоже, что мост JDBC-ODBC не подходит для вашего конкретного проекта, и вам может потребоваться найти драйвер JDBC для 4D. Вы можете начать поиск здесь.

person Gord Thompson    schedule 04.03.2014
comment
Отличный ответ. Ссылка 4D 4d.com/products/4djdbc.html не работает. Я попробую старое решение jdbc4d. - person jack-y; 04.03.2014
comment
К вашему сведению, старый драйвер jdbc4d не работает для моего проекта с 4D v11. Я меняю процесс: пишу пробелы, закодированные в строках (и мне нужно их декодировать в моем Java-приложении). Не так умно, но работает. - person jack-y; 06.03.2014