1

我在 Windows 上使用远程 4D v11 数据库和 ODBC 4D 驱动程序来访问和读取数据。问题在于表格的某些行:这些行的列以空格字符开头。这是有意的。

我的 java 应用程序必须使用它们的第一个空格字符来检索这些列。但它不起作用。

ODBC 4D 驱动程序工作正常。使用 Excel 中的 Microsoft Query 对其进行测试,读取表格中的列有其第一个空格字符。

在我的 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

不幸的是,印刷文本中没有第一个空格字符。错误可能在哪里?谢谢!

4

1 回答 1

1

我能够使用 JDBC-ODBC 桥和 Microsoft SQL Server ODBC 驱动程序重新创建您的问题。

  • 使用 SQL Server ODBC 驱动程序从 C# 和 VBA检索nvarchar带有前导空格的值时,会保留前导空格。
  • 通过 SQL Server JDBC 驱动程序从 Java 中检索相同的值也保留了前导空格。
  • 但是,通过 JDBC-ODBC 桥从 Java 中检索该值会去除前导空格。

因此,看起来 JDBC-ODBC 桥不适合您的特定项目,您可能需要找到 4D 的 JDBC 驱动程序。您可能想从这里开始搜索。

于 2014-03-04T16:34:11.550 回答