c# - 如何转换 AS400 ADO.Net 连接字符串中的 CCSID 65535 个字符

标签 c# ado.net connection-string ibm-midrange binary-data

我正在尝试进行设置,以便我可以从 AS400 数据库中读取二进制数据,而不必在每个选定的列上放置“CAST(TABLE.COL AS CHAR(29) CCSID 37) COL”。每次都这么说很痛苦,更不用说将列大小耦合到 C# 代码了(我想我可以将所有内容转换为 VARCHAR(9999),但是...)。

我假设我可以通过 ADO.Net 的连接字符串来做到这一点。但是,在尝试了我阅读过的各个页面中的每个建议设置以尝试使其正常工作之后,它们都给出了“ConnectionString 属性无效”。错误。

我已经尝试了以下每一种方法,它们都给出了相同的错误:

var connectionString = "DataSource=" + /*blah blah...*/ + 
//"; CCSID=37; TRANSLATE=1" +
//"; BinAsChar=true; CCSID=37;" +
//"; BinAsChar=true; CCSID=37; TRANSLATE=1" +
//"; BinAsChar=true; CCSID=37; Force Translate=1" +
//"; BinAsChar=true; CCSID=37; ForceTranslation=1" +
//"; CCSID=37; ForceTranslation=1" +
//"; ForceTranslation=1" +
//"; CCSID=37" +
//"; Host CCSID=37" +
//"; CharsetFor65535=0" +
//"; CCSID=EBCDIC" +
"";

有什么办法可以让它发挥作用吗?还是我必须继续污染我的所有查询?

最佳答案

自从 Redbook Mike 引用资料发布以来,看起来已经有所改进。

在 7.1 DB2 for i .NET Provider Technical Reference(作为 iAccess for Windows 或较新的 ACS Windows 应用程序包的程序员工具包组件的一部分安装)中,有几个有趣的属性...

iDB2Connection.CharBitDataAsString 属性
获取一个 bool 值,该值指示是否应将标记有 CCSID 65535 的字符位数据转换为字符串数据。

iDB2ProviderSettings.CharBitDataCcsid 属性
当 CharBitDataAsString 属性设置为 True 时,指定用于转换 iDB2CharBitData 和 iDB2VarCharBitData 类型的 CCSID。当 CharBitDataAsString 设置为 False 时,将忽略此属性。

关于c# - 如何转换 AS400 ADO.Net 连接字符串中的 CCSID 65535 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51753095/

相关文章:

c# - 调用套接字的ReceiveAsync()调用后,接收到的数据缓冲区始终为空吗?

c# - 我的 ArrayList 去哪儿了?地铁应用

.net - 查看Dapper中要执行的SQL语句

c# - 我如何将当前网站的 connectionString 用于 log4Net 而不是配置

connection-string - 覆盖 Orchard CMS 中的连接字符串(来自 settings.txt)

c# - 如何通过 Selenium、ChromeDriver 和 GoogleChrome 打开默认 Chrome 配置文件

c# - 非常棘手/复杂的文本格式 : How can I output a string[][] as a table?

c# - 在 ADO.NET 中,在 SQL 查询中使用 SQL 参数是否有限制?

asp.net - ADO.NET 实体数据模型缺失 Visual Studio 2015 社区

sql - 如何解决 "Keyword not supported: '元数据'”?