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

Macbook Air 2011にWindows 8をインストールしてみた

26日、Windows 8が発売されたので、早速現在メインマシンとなっている

Macbook Air 2011にインストールしてみました。

ダウンロード版は3300円ということで、今回はこれを入れてみました。

トラブルもあったけど、現在は安定して動いています。

 

Windows 7から、Windows 8をダウンロードして設定を引き継いでディスクを作成せずインストール

インストール完了後、再起動時に外付けHDDチェックが走る

(以前Windows起動中にHDDが外れたため、フラグが立っていたと思われる)

HDDチェック完了後、Windows 8を起動しようとしても再起動が無限に繰り返し起動しなくなる

再起動時のメニューから、Windows 7を選択してWindows 7に戻す

Bootcampマネージャを使わないといけないのかと思い調べるも、

Win7→Win8は普通にアップデートできるという情報を得る

再度Windows 7上から設定を引き継いでインストール

今度はインストール完了後、無事Windows 8が起動

カメラ、タッチパッドが使えない

さらに、ストアからアプリをダウンロードしてもインストールで失敗する

マイクロソフトのサポートに連絡しようとWebサイトから入力するも

ライセンス認証には成功しているにも関わらず

プロダクトIDを認識してくれず、問い合わせできない

調べてみたところ、Windowsのファイルが壊れているとWindows Updateできないという情報があり、

インストールエラー時に表示されるエラーコード(コード忘れた…0x7~)と同様のエラーコードであった

Windows 8インストール用ディスクを作成してディスク起動し、リフレッシュを実行してみる

インストールされていたProgram Filesのソフトが全部消える…

やはりアプリインストール時にエラーが表示されてインストールできない

Windows 8インストール用ディスクから起動し、クリーンインストールを実行

無事起動

Bootcamp 4でWindows 7用のドライバをインストールしたところ

設定引き継ぎでは使えなかったタッチパッド、カメラが正常に使えた

 

Twitterなどを調べてみても同様の現象で悩んでいる人は居なかったため、

うちの環境だけかもしれませんが、結構苦労しました。

 

Windows 8にはXboxLiveが統合されており、

ソリティアマインスイーパ、そのMicrosoftが提供する無料ゲームにも実績があったり

XboxのアバターをWindows PCから編集できたり、

SmartGlassアプリでXboxのゲームを操作したりと、

Xboxユーザはいろいろ楽しめると思います。

XNA用多言語テキスト編集ツールのバージョンアップをしました。

今回のバージョンアップでは、若干操作性を向上しました。

  • テキストボックスのサイズを環境設定に保存するようにした。
  • 使用文字テーブルテキストの自動生成を初めて行う際、 確認メッセージを表示するようにした

詳細は下記よりご確認ください。

http://www.takegami.net/xna-tools/multi-language-text-manager/

 

English site

http://www.takegami.net/xna-tools/multi-language-text-manager/en/

XNA用多言語テキスト編集ツール Multi Language Text Manager更新内容

前回の更新Ver.1.1.0.0より、Ver.1.3.1.1になりました。

下記の機能を追加しました。

  • 使用文字テーブル生成を、ファイル保存時に自動で行う設定を追加した
  • 使用文字テーブル生成時、上書きだけでなく追加保存も行えるようにした
  • 複数行編集モード時、テキストボックスの行数を指定できるようにした
その他不具合修正やメニュー項目の変更もあります。
また、今回のバージョンで生成させるXMLファイルが変更されているため
以前生成したXMLファイルは読み込めなくなっています。
 
詳細は下記よりご確認ください。
Webサイトを、WordPressで構築しなおしました。

XNA用多言語テキスト編集ツールのバージョンアップをしました。

 

Ver 1.1.0.0 - 2012/07/13
 ▼追加機能
  ・複数行テキストの入力に対応した。
  ・それに伴い、MultiLanguageTextManager クラスと MuitlLanguageTextData クラスに
   改行コード置換用メソッド ReplaceNewLineCode() を追加した。
  ・言語ID情報クラス LanguageIDInformation を追加した。
 ▼仕様変更
  ・入力データが変更された状態で保存を行った場合、変更を適用して保存するようにした。
  ・編集中のファイルパスが30文字を超える場合、省略して表示するようにした。
  ・言語ID一覧取得メソッド GetLanguageIDList() の戻り値を、
  ・Dictionary<string,string> から List<LanguageIDInformation> に変更した。
  ・サンプルのデータを複数行対応データに変更した。
 ▼不具合修正
  ・言語ID管理画面で、全ての項目を削除すると強制終了する不具合を修正した。

http://www.takegami.net/xna-tools/multi-language-text-manager/

 

今回のバージョンアップで、テキストの複数行入力に対応しました。

前回までのXMLデータはそのまま使用できます。

f:id:BANX:20120713135757p:plain

 

今回の仕様変更で、取得する言語ID一覧がDictionaryからListに変更になりました。

この変更により、ループ処理などを行いやすくなりました。

XNA用多言語テキスト編集ツールのバージョンアップをしました。

今回の更新では、MultiLanguageTextManagerクラスに

言語IDと説明の一覧を取得できる機能を追加しました。

また、言語IDと説明に使用される文字列も使用文字テーブルテキストへ

書き出すように変更しました。

この追加機能により、言語IDが増減した場合でもプログラムを変更せずに

対応することが可能となります。

http://www.takegami.net/xna-tools/multi-language-text-manager/

 

プログラミング例:

  1. オプション画面の項目を全てMultiLanguageTextManagerから取得して表示させる。
  2. 言語変更オプション画面等で、言語ID一覧を取得する。
  3. 左右キー押下で、言語ID一覧より前/次の言語IDを取得する。
  4. 取得した言語IDをMultiLanguageTextManagerに設定する。 
    (この時点で表示される項目が全て前/次の言語になる) 

XNA用多言語テキスト編集ツールをリリースしました。

XNAでの多言語テキストの扱いを(少し)簡単にできる、

Multi Language Text Manager Editor for XNAをリリースしました。

あまり大したことができるワケではありませんが

少しだけ、マルチランゲージテキストの扱いが楽になればいいなと思って作りました。

http://www.takegami.net/xna-tools/multi-language-text-manager/

サイトの方は、しばらくまともにネットできない状態になるため

その前に公開しようと思い急ぎで作ったので、突貫工事状態となっています。

要望やバグなどがありましたら、コメント欄やTwitterのmentionなどで

ご連絡ください。