我有SQLite.Net的查詢編碼問題。一切正常,如果我只使用SQL字符串中的列名稱,但如果我自己寫SQL,每個特殊字符如ä,ü,ö,ß都不會被正確編碼。 這裏有兩個簡單的例子,一個工作,一個不工作。WPU SQLite.Net.SQLiteConnection.Query編碼問題
public class ass {
[PrimaryKey, AutoIncrement]
public int _id { get; set; }
[MaxLength(255)]
public string sortname { get; set; }
}
dbConn = new SQLiteConnection(new SQLitePlatformWinRT("testpasswort"),DB_PATH);
dbConn.CreateTable<ass>(SQLite.Net.Interop.CreateFlags.None);
//add a test entry with special chars
ass asss = new ass();
asss.sortname = "oe=öae=äszett=ß";
dbConn.Insert(asss);
//now select the test entry to an ass object
List<ass> getass = dbConn.Table<ass>().ToList<ass>();
//the list is filled and sortname = "oe=öae=äszett=ß"
//now fake a object with
List<ass> sqlass = dbConn.Query<ass>("SELECT 'oe=öae=äszett=ß' as sortname FROM ass").ToList<ass>();
//the List is filled and sortname = "oe=�ae=�szett=�"
我知道查詢是無用的,下面的工作:
List<ass> sqlass = dbConn.Query<ass>("SELECT sortname as FROM ass").ToList<ass>();
但問題是,該.Query的Funktion有一個編碼的問題,這是不行的:
List<ass> sqlass = dbConn.Query<ass>("SELECT sortname FROM ass WHERE sortname LIKE '%ä%'").ToList<ass>();
但是這將工作:
List<ass> sqlass = dbConn.Query<ass>("SELECT sortname FROM ass).ToList<ass>().Where(v => v.sortname.Contains("ä"));
每當我在sqlcode中有任何特殊字符時它將不起作用,這對我的需求是致命的,因爲我有很多替換(列,查找,替換)語句,如果查找或替換字符串包含任何字符ü,ö,ä[...]
有沒有人知道如何解決這個問題?
你嘗試使用的參數是這樣的'名單 sqlass = dbConn.Query ( 「選擇sortname FROM屁股WHERE sortname樣?」,@ 「A」)ToList ();' –
jomsk1e