java - JDBC ODBC 和 4D 数据库 : when reading a row, 未发送列的第一个空格字符

标签 java jdbc odbc jdbc-odbc 4d-database

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

相关文章:

java - 当我们按下键盘上的 TAB 按钮时,如何使滚动 Pane 的滚动条随光标自动移动?

java - 进度条无限旋转

java - 如何使用Spring管理多个 "runtime noticed"与不同jdbc(或hibernate?)的数据库连接?

python - 在没有 ODBC 的情况下将 Python 连接到 SQL Server

SQL Native Client ODBC 应用程序在 SQLDisconnect 后未断开连接且未池化?

php - 在 PHP 中使用 odbc_exec 时使用 try-catch 语句的意外行为

java - 为什么传递给 runnable 的变量需要是最终的?

java - 字符编码的奇怪结果

java - 将数据插入到java JDBC中的很多列中

java - 在 hbase 中,无法识别 dir hdfs ://test/apps/hbase/data/lib, 的 fs 忽略了 java.io.IOException