gpt4 book ai didi

c# - WPU SQLite.Net.SQLiteConnection.Query 编码问题

转载 作者:太空宇宙 更新时间:2023-11-03 12:45:59 35 4
gpt4 key购买 nike

我对 SQLite.Net 的查询有一个编码问题。如果我只使用 SQL 字符串中的列名,一切正常,但如果我自己编写 SQL,则每个特殊字符,如 ä、ü、ö、ß 都不会被正确编码。这里有两个简单的例子,一个有效,一个无效。

   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 函数有编码问题,这将不起作用:

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 中有任何特殊字符时它都不起作用,这对我的需求来说是致命的,因为我有很多替换(列、查找、替换)语句,如果查找或替换字符串,它们都会失败包含任何 ü,ö,ä [...]

有人知道怎么解决吗?

最佳答案

一个可能的解决方案是使用@params 而不是直接的字符串请求。并使用 UTF-8 encoding pragma,您还可以使用它来检查现有的数据库编码。可以找到有关此问题的有用描述 here .

关于c# - WPU SQLite.Net.SQLiteConnection.Query 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37302666/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com