关于 c#:SQLite 错误:在 \\”s\\” 附近:语法错误

SQLite Error: near "s": syntax error

我总是得到这个错误

near"s": syntax error

我的实现:

1
litecon.ConnectionString ="Data Source=" + AppAddress +"\\\\database\\\\mynew22.db;Version=3;UTF16Encoding=True";

从这个方法收到错误 -> liteda.Fill(dt);

1
2
3
4
5
6
7
        if (lang =="FaToMe")
            liteda.SelectCommand = new SQLiteCommand("select * from mey where trans like '%" + str +"%'", litecon);
        else
            liteda.SelectCommand = new SQLiteCommand("select * from mey where pe like '%" + str +"%'", litecon);

        DataTable dt = new DataTable();
        liteda.Fill(dt); //liteda is SQLiteDataAdapter

这个选择命令没有区别...

1
"select * from mey where pe like '%" + str +"%'"

1
"select eng"

总是说在 "s" 附近:语法错误

但如果使用 "xselect * from mey",请在 "x" 附近说:语法错误

我正在使用这个库
http://adodotnetsqlite.sourceforge.net/


str 的值包含撇号时,此查询将不起作用,因为字符串将过早终止:

1
select * from mey where trans like '%King Solomon's Mines%'

你必须使用参数:

1
2
cmd = new SQLiteCommand("select * from mey where trans like @pattern", litecon);
cmd.Parameters.AddWithValue("@pattern","%" + str +"%");


问题通常与撇号有关。您可以使用它们,但必须像另一个答案中提到的那样加倍,

select * from mey where trans like '%King Solomon's Mines%'
应该改为
select * from mey where trans like '%King Solomon''s Mines%'.

一个快速的解决方案是做 "select * from mey where trans like"+"'%King Solomon's Mines%'".Replace("'","''")

无论如何都会成功的。


问题解决了!

使用了这些库,问题就解决了……
http://www.devart.com/dotconnect/sqlite/download.html

谢谢大家