Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

c# membaca Tabel SQL (dengan karakter khusus) ke dalam DataSet

Berikut adalah solusi yang mungkin, tetapi belum teruji, jadi ingatlah itu!

Saya menemukan masalah serupa beberapa waktu lalu dengan karakter khusus di Oracle. Kami mengatur karakter kami ke UTF-16. Memiliki hal-hal aneh seperti umlauts dan karakter ascii lainnya di luar kisaran normal 32-127.

Satu hal yang mungkin Anda coba adalah pertama-tama melakukan penyandian HTML untuk apa pun di luar rentang itu, memuatnya ke dalam datatable Anda di c#, kemudian ketika datatable sedang diisi (atau setelah diisi ...), lakukan decode html pada bidang tersebut.

Kami memiliki fungsi encode html yang melakukan ini untuk kami, seperti:

  FUNCTION HTML_Encode_Special_Characters
   (p_string IN VARCHAR2,
    p_do_encode IN VARCHAR2 DEFAULT 'Y')
  RETURN VARCHAR2 IS
    first_location number := REGEXP_INSTR(p_string, '([^' || CHR(1) || '-' || CHR(127) || '])');
    v_string VARCHAR2(32000);
    v_char VARCHAR2(1 char);
    v_ascii_number number;
  BEGIN
    IF p_do_encode = 'Y' AND first_location > 0 THEN
      v_string := p_string;

      FOR i IN first_location .. length(v_string) LOOP
        v_char := substr(v_string,i,1);
        v_ascii_number := ascii(v_char);
        IF v_ascii_number > 128 THEN
          -- just replace all of them
          v_string := REPLACE (v_string, v_char,'&#' || v_ascii_number || ';');
        END IF;
      END LOOP;

      RETURN (v_string);
    ELSE
      RETURN p_string;
    END IF;

  END;

Jadi ini akan memuat data "string" ke dalam tabel Anda dan setiap kasus di mana Anda memiliki karakter khusus, itu akan muncul seperti '½' atau semacamnya.

Kemudian di sisi C# Anda dapat melakukan sesuatu dengan dekode html:

using System.Web;

HttpUtility.HtmlDecode(mystring);

Sekali lagi... belum teruji. Tapi itu harus sangat mudah untuk diimplementasikan dan diuji dan/atau diubah sedikit untuk membuatnya bekerja.

Solusi alternatif juga adalah dengan hanya melakukan perbaikan data pada database Anda untuk mengubah semua karakter khusus tersebut menjadi representasi "biasa" (yaitu, tanda hubung em ke tanda hubung normal). Anda dapat melakukannya dengan beberapa ekspresi reguler, menggunakan fungsi CHR(), dan untuk melihat data ganjil menggunakan fungsi DUMP().




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah perhitungan minggu Oracle

  2. PILIH Data DARI KURSOR PAKET, cetak

  3. Ubah gambar gumpalan menjadi PUBLIC.ORDIMAGE di plsql

  4. Bagaimana cara mengambil nilai dari prosedur Oracle bersarang?

  5. Mengirim nilai yang dibatasi koma ke klausa WHERE dalam prosedur tersimpan oracle