1

リモートの 4D v11 データベースと Windows 上の 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 Bridge は特定のプロジェクトには適していないようで、4D 用の JDBC ドライバーを見つける必要があるかもしれません。ここから検索を開始することをお勧めします。

于 2014-03-04T16:34:11.550 に答える