2011年11月26日土曜日

SQLiteをVisualStudioで使う

文字列が化けてハマりました。。

VS2010, SQLite3, c++
「マルチバイト文字」を使用するプロジェクト環境です


・DBはUTF-8で作成
sqlite3_open_v2を使ってオープン。

・文字列の書き込みはUTF-16
SJIS -> UTF-16に変換したLPBYTEの文字列をsqlite3_bind_text16で書き込み。
MultiByteToWideChar(CP_ACP, ... )で変換します

・文字列の読み出しもUTF-16
sqlite3_column_text16で読み出したものをLPBYTEにキャスト、
UTF-16 -> SJISに変換して文字列を取得。
WideCharToMultiByte(CP_ACP, ... )で変換します


何故かわかりませんが、
DBと文字列を共にUTF-8で扱うと化けたので、
文字列の方を16で扱っています・・何でだろう。。
更に、DBと文字列を共にUTF-16で扱うと、これもまた化けてしまいました

どこかで何か間違えたのだろうか。うーん。。
もう少し試してみる必要がありそうです。


ついでにハマった(引っかかった)ことは、
bind〜が「1」originなのに、
column〜が「0」originだということ。
絶妙なる引っかけ・・。初心者にはキビシイっす