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 数据库:读取一行时,不发送列的第一个空格字符的主要内容,如果未能解决你的问题,请参考以下文章
在 Eclipse JDBC ODBC 中连接数据库时出错,
通过 JDBC/ODBC 访问数据库时,您应该为每个请求创建和关闭连接吗?