我在c#上使用SQLite提供程序。
我正在尝试使用SQL select * from table where name like 'part_of_name%'
。但是此查询无法正常工作。调试写System.InvalidOperationException in application System.Data.SQLite.dll
。
实施例:
我的表Books(id, name)
包含3个项目:
在SQLite Manager中,查询select * from Books where name like 'Harry%'
向我显示了第1和第2项,但在我的c#应用程序中只显示了1-st和debug异常。当我尝试... like '%'
时,我的应用程序只向我显示第一项,但是当我尝试... like 'God%'
时,它会向我显示第三项。
请帮帮我。谢谢!
这是代码:
sqliteConn.Open(); //open connection
sqliteDA.SelectCommand = new SQLiteCommand("select * from Books where name like '" + text + "%'", sqliteConn); //create SQL-query in sqlite data adapter
dataSet.Tables["Books"].Clear(); //clear our dataset.table with old info
sqliteDA.Fill(dataSet, "Books"); //fill our dataset.table with info from sqlite data adapter
sqliteConn.Close(); //close connection
答案 0 :(得分:1)
您应该使用参数并在参数值上应用%
。尝试这样的事情,让我知道它是否有效:
SQLiteCommand cmd = new SQLiteCommand("select * from Books where name like @name", sqliteConn);
cmd.Parameters.AddWithValue("@name", string.Concat(text, "%"));
sqliteDA.SelectCommand = cmd;
DataTable dataTable = new DataTable();
sqliteDA.Fill(dataTable); //just a DataTable instance