JDBC ODBC 和 4D 数据库:读取一行时,不发送列的第一个空格字符

Posted

技术标签:

【中文标题】JDBC ODBC 和 4D 数据库:读取一行时,不发送列的第一个空格字符【英文标题】:JDBC ODBC and 4D Database : when reading a row, the first space character of a column is not sent 【发布时间】:2014-03-04 15:22:20 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

很好的答案。 4D 链接4d.com/products/4djdbc.html 已损坏。我会尝试旧的 jdbc4d 解决方案。 仅供参考,旧的 jdbc4d 驱动程序不适用于我的 4D v11 项目。我改变了过程:写在行中编码的空格(并且需要在我的Java应用程序中解码它们)。不是很聪明,但它很有效。

以上是关于JDBC ODBC 和 4D 数据库:读取一行时,不发送列的第一个空格字符的主要内容,如果未能解决你的问题,请参考以下文章

什么是数据源?JDBC,ODBC两个应该怎么理解?

在 Eclipse JDBC ODBC 中连接数据库时出错,

通过 JDBC/ODBC 访问数据库时,您应该为每个请求创建和关闭连接吗?

使用 UCanAccess 代替 JDBC-ODBC Bridge 来读取 excel 表

连接 jdbc odbc 驱动程序时出错

使用 JDBC-ODBC 桥时是不是使用了两个不同的驱动程序?