すず工房

 
  • Increase font size
  • Default font size
  • Decrease font size
IT経営支援の専門家 ITコーディネータ として、地域の中小企業のIT経営、IT化を支援します。  ITコーディネータはIT経営を実現するプロフェッショナルです。

Excel,ODBC,NSBASIC/CE,SQLite

Eメール 印刷 PDF
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に比べると一桁近く早いようです。

あと少しテストが残っていますが、ほぼ問題ないのではないかと考えてています。もし何か不具合がでましたらまたご報告します。