SQL查询使用sqlite解决c#上的问题

时间:2012-12-29 00:49:31

标签: c# system.data.sqlite

我在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. 教父
  4. 在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
    

1 个答案:

答案 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