我在 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
不幸的是,打印文本中没有第一个空格字符。 错误可能出在哪里? 谢谢!
最佳答案
我能够使用 JDBC-ODBC Bridge 和 Microsoft SQL Server ODBC 驱动程序重现您的问题。
- 当使用 SQL Server ODBC 驱动程序从 C# 和 VBA 检索带有前导空格的
nvarchar
值时,前导空格将被保留。 - 通过 SQL Server JDBC 驱动程序从 Java 检索相同的值也保留了前导空格。
- 但是,通过 JDBC-ODBC 桥从 Java 检索该值会去除前导空格。
因此,看来 JDBC-ODBC 桥不适合您的特定项目,您可能需要找到适用于 4D 的 JDBC 驱动程序。您可能想开始搜索here .
关于java - JDBC ODBC 和 4D 数据库 : when reading a row, 未发送列的第一个空格字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22175961/