0

我在 c# 上使用 SQLite 提供程序。我正在尝试使用 SQL select * from table where name like 'part_of_name%'。但是这个查询不能正常工作。调试写入System.InvalidOperationException in application System.Data.SQLite.dll

示例:我有Books(id, name)3 个项目的表:

  1. 哈利·波特与魔法石
  2. 哈利·波特与密室
  3. 教父

在 SQLite Manager 查询select * from Books where name like 'Harry%'中显示了第 1 项和第 2 项,但在我的 c# 应用程序中只有第 1 项和调试异常。当我尝试时,... like '%'我的应用程序只显示第 1 项,但当我尝试时... like 'God%',它显示第 3 项。请帮帮我。谢谢!这是代码:

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
4

1 回答 1

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
于 2012-12-29T01:00:47.633 回答