2016-09-15 68 views
1

我有一個使用UTF8編碼的PostgreSQL數據庫。我相信這是默認編碼。如何在參數化SQL查詢中避免無效的UTF8字節序列?

我有一個GUI應用程序,發出一個典型的SELECT查詢,WHERE子句。該查詢是參數化的,參數的內容通常由最終用戶粘貼。該值不是從文本文件等中讀取的 - 它被粘貼到備忘錄編輯中。

下面是該查詢...

cmd.CommandText = @"SELECT history_id, emplid, displayname 
        FROM ""MAX_HISTORY_IDS"" 
        WHERE searchname ILIKE :searchname"; 

cmd.Parameters.Add("searchname", PgSqlType.VarChar).Value = "Sievert,Jürgen"; 

在上面的代碼,參數值,Sievert,Jürgen,將是一個變量解析一份備忘錄編輯框,或文本輸入等該名稱的也是導致這個查詢導致Postgre無效的UTF8字節序列錯誤的名稱的真實例子。

現在,我假設數據庫上的UTF8編碼很好,並且對於這種類型的內容非常標準。這裏有什麼問題?該文本參數的編碼不是UTF8嗎?我怎樣才能使這個查詢工作,或者是數據庫上的編碼不適合?

回答

1

我想通了。我正在使用DotConnect PostgreSQL客戶端庫。在連接字符串中,我只需要添加Unicode=True。這似乎使一切工作。

相關問題