亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 AS400 ADO.Net 連接字符串中轉換 CCSID 65535 個字符

如何在 AS400 ADO.Net 連接字符串中轉換 CCSID 65535 個字符

C#
慕娘9325324 2021-11-21 10:16:01
我正在嘗試進行設置,以便我可以從 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" +"";有什么辦法可以讓它發揮作用嗎?還是我必須繼續污染我的所有查詢?
查看完整描述

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 時,將忽略此屬性。


查看完整回答
反對 回復 2021-11-21
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

此類問題的最佳資源是 IBM Redbook Integrating DB2 Universal Database for iSeries with Microsoft ADO.NET。

在頁 151 上,有一個圖表將OLE DB 提供程序IBMDA400IBMDASQLOLE 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 代碼中)執行翻譯。


查看完整回答
反對 回復 2021-11-21
  • 2 回答
  • 0 關注
  • 329 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號