ODBCドライバは、XML値からODBC文字C型(SQL_C_CHARおよびSQL_C_WCHAR)への変換と、XML値からバイナリC型(SQL_C_BINARY)への変換をサポートしています。また、その逆の変換もサポートしています。
データベースから取得したXMLデータ型の値は、完全なXML文書になることもありますが、シーケンスやアトミック値などの非整形式のテキスト エントリ(XML文書の断片を含む)になることもあります。データベースに挿入するXMLデータ型の値は、XML文書(整形式)にする必要があります。
XMLに推奨される変換方法は、SQL_C_BINARYまたはSQL_C_WCHARとの間で変換することです。このようにすると、アプリケーションで使用されているUnicode以外のコード ページへの変換を排除し、変換エラーをなくすことができます。SQL_TD_XMLのデフォルトのODBC C型はSQL_C_BINARYです。ODBC C型として表されるSQL_TD_XML値の一覧を以下に示します。
XMLの表現形式 | 説明 |
---|---|
SQL_C_BINARY | この値は、XMLテキスト内でどのようなエンコーディングが宣言されていたとしても、UTF8でエンコードされた文字のシーケンスになります。 |
SQL_C_CHAR | この値は、XMLテキスト内でどのようなエンコーディングが宣言されていたとしても、アプリケーション コード ページでエンコードされた文字のシーケンスになります。 |
SQL_C_WCHAR | この値は、アプリケーションで有効なUnicodeエンコーディング(Linux/Unixの場合はUTF8またはUTF16、Windowsの場合はUTF16、Apple OS Xの場合はUTF32)でエンコードされた文字のシーケンスになります。このエンコーディングは、XMLテキスト内でのエンコーディング宣言は関係しません。 |
特定のXML文書について、その文書をODBCで作業する場合に推奨されるODBC C型は、そのXML文書内の宣言で特定されるXML文書のエンコーディングによって異なります。XML文書のエンコーディングに推奨されるODBC C型の一覧を以下に示します。
XML文書のエンコーディング宣言 | ODBCアプリケーションでXML文書を作業するときに推奨されるODBC C型 | ||
---|---|---|---|
Windows | Linux/Unix | Apple OS X | |
UTF8 | SQL_C_BINARYまたはSQL_C_WCHAR。SQL_C_WCHARを使用すると、エンコーディングはUTF16になります。 | SQL_C_BINARYまたはSQL_C_WCHAR。 | SQL_C_BINARYまたはSQL_C_WCHAR |
UTF16 | SQL_C_WCHAR | UTF16のUnicodeエンコーディングを使用したSQL_C_WCHAR。詳細は、Unicode文字型を参照してください。 | SQL_C_WCHAR |
その他 | 文書のエンコーディングと一致するアプリケーション コード ページを使用したSQL_C_CHAR。 | XML文書のエンコーディングと一致するアプリケーション コード ページを使用したSQL_C_CHAR。 | 文書のエンコーディングと一致するロケールLC_TYPE設定を使用したSAL_C_CHAR。 |