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 に答える