C#中国語を含むoracle BLOBを読み込む


次のコードは、oraclデータベースから中国語を含むBolbを正しく読み出す方法を示しています.

public   string  getAttachment()
... {
            String sql  =   " select BOLB_CONTENT from SOME_TABLE where ID = '222' " ;

            OracleConnection conn  =   new  OracleConnection(connString);
            conn.Open();
            
            OracleCommand cmd  =  conn.CreateCommand();
            cmd.CommandText  =  sql;

            OracleDataReader reader  =  cmd.ExecuteReader();
            reader.Read();

            System.Text.StringBuilder sb  =   new  StringBuilder();
             byte [] buffer  =   new   byte [ 8192 ];

             int  i  =   0 ;
             int  j;

             do
             ... {
                j  =  ( int )reader.GetBytes( 0 , i, buffer,  0 , buffer.Length);
                sb.Append(System.Text.Encoding.Unicode.GetString(buffer,  0 , j));
                i  +=  j;
            }   while  (j  ==  buffer.Length);

             return  sb.ToString();
}

なお、24行目にEncodingを使用するのは、データベースに格納する際にも使用するUnicode符号化であるため、ここでは読み出しの際に同様の符号化を使用する必要がある.エラーが発生する可能性があります.
以下は、中国語文字データを符号化バイナリ配列に変換するコードです.
System.Text.Encoding.Unicode.GetBytes(「oracleデータベースの中国語読み書きをテスト!」);