System.Data.SQLiteを用いた、C# + SQLiteでのLIKE抽出のメモ
System.Data.SQLite( http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki )を用いると、C#で容易にSQLiteを扱うことができるようになります。
Visual Studio 2010のクエリビルダなども使えて便利なので、勉強用にいろいろ作って試していました。
そんな中、LIKEを使ったあいまい抽出が上手くいかなかったので、備忘録的メモとして記録しておきます。
まず、クエリビルダの使い方は下記で調べました。
連載:Visual Studio 2005によるWindowsデータベース・プログラミング
第5回 詳細項目画面の作成とカスタマイズ
http://www.atmarkit.co.jp/fdotnet/vblab/vsdbprog_05/vsdbprog_05_03.html
LIKEの部分は
LIKE '%' + @keyword+ '%'
のように記載するように書かれているため、そのようにしてプログラムを実行してみました。
すると、その文字列が含まれるにも関わらず抽出結果はNULLとなってしまいました。
プログラムに問題があるのかと思い、クエリビルダからクエリを実行しても同じくNULLに。
@keywordの型とデータの型が合ってない、等の問題でできないのかなと思い
LIKEを消して、試しに
WHERE NAME = @Keyword
で抽出を行うと問題無く抽出できました。
この後、いろいろ試したところ、LIKEの部分を
LIKE @keyword
にして、Keywordを取得するプログラムの部分で、
Keywordの前後に%を付加( "%" + keyword + "%" )することで
LIKEが動作するようになりました。
System.data.SQLiteの問題なのか、他に何か問題があるのかは不明ですが
同様の問題で悩んでいて、同様の解決方が提示されていたので
とりあえず今回はコレでいくことにしました。
C# SQLite Parameterized Select Using LIKE
http://stackoverflow.com/questions/4329953/c-sharp-sqlite-parameterized-select-using-like