C#擷取並寫入ORACLE資料庫中中英文字元集問題

來源:互聯網
上載者:User

標籤:

背景

開發語言:C#

開發工具:VS2010

A方ORACLE資料庫:中文字元集

B方ORACLE資料庫:英文字元集

傳遞方式:webservice方式(取資料,並把取出的資料放到DataTable中,迴圈回寫入B方的預存程序中)

問題

     從A方庫裡擷取資料插入到B方庫裡寫的預存程序裡,到B方資料庫後,漢字都變為亂碼(問號較多)

 

解決方案

  方法一:最初從A方庫取資料時用ORACLE的轉換函式UTL_RAW.CAST_TO_RAW轉換下該欄位,即select UTL_RAW.CAST_TO_RAW(a) from A

B方庫裡接收資料的預存程序應該用utl_raw.cast_to_varchar2()函數解析之後插入到B方庫裡

  結果:B方庫未接收到任何資料

 方法一失敗原因,經過跟蹤方向直接查詢select UTL_RAW.CAST_TO_RAW(a) from A在A方庫裡是顯示出二進位碼的,但是查詢出的資料不能存到DataTable中,到DataTable中就變成了System.Data[],顯示是查出的不是字串造成的,由此想到把轉換的資料查詢時轉換為字串

 

方法二:

    用ORACLE的字元截取函數來轉換為字串(to_char不可行),語句為:select substr(UTL_RAW.CAST_TO_RAW(a),0,length(UTL_RAW.CAST_TO_RAW(a))) from A;B方庫裡接收資料時預存程序仍用utl_raw.cast_to_varchar2()函數解析之後插入到B方庫裡

  結果:漢字在B方庫裡顯示正常

 

C#擷取並寫入ORACLE資料庫中中英文字元集問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.