BANXの日記

ゲームとか、たまにプログラムとか。

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