WindowsXPとPDAとでデータ連携するためにSQLiteを採用しようとしたのに、えらいトラブリました。ほぼ解決できる見通しなので、備忘録としてアップします。
(ちなみにNSBASICのBBSにも報告しました)
1.ExcelとSQLiteのDBとの間で入出力
ExcelのADOを使用して、SQLiteのODBCドライバ経由で、シートの内容をSQLiteのDBに出力しました。
その結果、WindowsのExcelからは、読書きができるようになりました。このことは、SQLite Database BrowserというフリーソフトでそのDBを読み書きできることからも確認できました。
2.エラー
その後、このファイルを、Windows Mobile のエミュレータにコピーし、NSBASIC/CEから読むと、データベースを開くときに、「Malformed database schema」 というエラーになり、DBをひらくことができません。エラーの意味としては、「データベースのスキーマが壊れている」ということでしょうか。
ただし、SQLite Database Browser で直接作成したDBはNSBASIC/CE で読込むことができ、また逆に、NSBASIC/CEで作成したDBはExcelで読込むことができました。
3.原因および対策
Web上にも同じエラーメッセージの例がありましたが、あてはまるものはありませんでした。そのなかで、もっとも近そうなのが、文字コードがExcel:UTF-16、PDA:UTF-8 と異なるせいではないか、というものでしたが、これを解決する手段は見つかりませんでした。
上記の、SQLite Database BrowserとNSBASIC/CEとの関係から、ExcelのADOおよびSQLiteのODBCドライバに不具合があるのではないかと推測されましたので、webからダウンロードした datenhaus社の dhSQLite というフリーの、ADOにほぼ互換の、SQLite-engine を利用してプログラムを組直し、結果、Excel上で作成したものを、NSBASIC/CEから読込むことができました。動作速度もExcelのADOに比べると一桁近く早いようです。
あと少しテストが残っていますが、ほぼ問題ないのではないかと考えてています。もし何か不具合がでましたらまたご報告します。













