2 回答

TA贡献1712条经验 获得超3个赞
自 Redbook Mike 参考文献发布以来,似乎有一些改进。
在 7.1 DB2 for i .NET Provider Technical Reference(作为 iAccess for Windows 或较新的 ACS Windows 应用程序包的程序员工具包组件的一部分安装)中有几个感兴趣的属性......
iDB2Connection.CharBitDataAsString 属性
获取一个布尔值,该值指示是否应将标记为 CCSID 65535 的字符位数据转换为字符串数据。
iDB2ProviderSettings.CharBitDataCcsid 属性
指定当 CharBitDataAsString 属性设置为 True 时用于转换 iDB2CharBitData 和 iDB2VarCharBitData 类型的 CCSID。当 CharBitDataAsString 设置为 False 时,将忽略此属性。

TA贡献1810条经验 获得超4个赞
此类问题的最佳资源是 IBM Redbook Integrating DB2 Universal Database for iSeries with Microsoft ADO.NET。
在页 151 上,有一个图表将OLE DB 提供程序IBMDA400
或IBMDASQL
OLE DB 提供程序的功能与IBM.Data.DB2.iSeries
.NET 提供程序进行了比较。它说:
Force Translate未由 IBM.Data.DB2.iSeries 提供程序实现。在第 90 页的“iDB2CharBitData 和 iDB2VarCharBitData”中阅读有关处理标记为 CCSID 65535 的字符数据的信息。
还值得注意的是,在 4.5.2 节中列出了您可以放在连接字符串上的属性,没有与您尝试指定的内容相似的内容。这意味着如果您使用 OLE DB 提供程序,而不是 .NET 提供程序,您可能能够对连接字符串执行此转换。
它确实提供了一些技术,您应该能够使用这些技术来清理您的查询并允许您继续使用IBM.Data.DB2.iSeries
提供程序(我通常更喜欢)。它们CAST
在第 91 页显示了您当前使用的技术,然后在第 93 页显示了可用于iDB2DataReader
, 调用方法GetiDB2CharBitData
或的替代技术GetiDB2VarCharBitData
。还有一个.ToString
您可能更喜欢的重载: .ToString(CCSID)
. 我认为这第二种技术在客户端(在 .NET 提供程序中)执行翻译,而您当前的技术在服务器端(在 iSeries SQL 代码中)执行翻译。
- 2 回答
- 0 关注
- 287 浏览
添加回答
举报