2009-01-31 16 views
1

我正在開發一個使用.NET 2.0的WinForms應用程序,並試圖使用SQLite作爲DB解決方案。我的主要問題是,當數據是非英語語言時(在我的情況下希臘語),我無法從WinForm中的數據庫中查看數據。使用SQLite和WinForms 2.0編碼問題C#

對於數據庫管理的目的,我使用SQLite administrator它沒有任何麻煩,在希臘語返回數據。但是當我在窗體中的DataGridView中加載數據時,會遇到可怕的「缺少字符」正方形符號。

爲了與db溝通,我使用了System.Data.SQLite解決方案。

有什麼我在這裏失蹤?我看着在數據庫中設置的默認排序規則,但沒有拿出任何東西,因爲SQLite不支持的SQL Server等(例如COLLATE Greek_CI_AS)整理值

感謝

附:我正在使用SQLite 3和System.Data.SQLite.dll 1.0.60。測試的連接字符串爲: Data Source=test.db;UseUTF8Encoding=True;

回答

2

您是從數據庫中檢索字符串還是字節數組?在內部,SQLite使用UTF-8或UTF-16字符串(取決於使用哪種方法將字符串插入數據庫),這是使用sqlite3_column_text獲取字符串值時返回的內容。另一方面,如果你要求一個blob,它只會返回基礎字節,這可能與您的應用程序期望的字符編碼不匹配。

我不確定ADO提供程序如何映射到這些底層操作,但在我看來,如果您的文本不是作爲unicode返回的,或者它是,但應用程序正在處理它,否則可能會成爲問題所在。

http://www.sqlite.org/c3ref/column_blob.html

編輯:雖然我想起來了,嘗試在SQLiteman打開你的數據庫,看看是否有任何區別。

1

該問題最有可能是由SQLite管理員造成的。遵循Mike的建議,我還使用SQLiteman來測試數據庫。當我查詢使用SQLite管理員插入的示例數據時,我得到了使用我的代碼的相同「缺少字符」符號。

然後我試着相反。我使用SQLiteman創建了一個數據庫,添加了一些行,代碼以正確的格式獲得了結果。然後我在應用程序中添加了一行,結果再次正確。

非常感謝邁克,你的建議幫助了我。

此外,絕不意味着SQLite管理員不是一個好的應用程序。但是,這可能與具體情況有關。 再次感謝