WeatherNowでは次バージョンでアメダス・天気情報をデータベース化します。
実際に作って試してみたところアメダス情報79レコードで16KBとなり、将来的に内部ストレージに保存するにはちょっと厳しくなる。なのでSDカード上にデータベースを作ってみました。
*ここに載せているコードは実際のコードではなくブログ用に手打ちしています。ミスがあるかも知れませんが悪しからず。
先にこちらの記事から読んで下さいな。
まずは失敗コード。
このサイト様を参考に作ったのですが、これを実際に使ってみると
java.lang.IllegalArgumentException:
File /sdcard/weathernow/database/weathernow_database.db contains a path separator
と怒られてしまいました。ちなみにTargetAPIは7です(Android 2.1向け)。
SQLiteOpenHelperで管理するデータベースはどうやら"/"を含んではいけない様です。
以下、改善策。
SQLiteOpenHelperのソースを読んでも全く参考にならなかったのですが、グーグル先生で探したところこちらにSDカード上にデータベースを構築する方法がありました。
・DatabaseAccess.java(SQLiteOpenHelperの代わり)
こんな感じのを作りました。openDatabase()で一度データベースを開きさえすれば、後はSQLiteOpenHelperでの操作とほとんど変わらないと思います。
最後に、noxiはこの記事のエントリー時でやっとJava歴3ヶ月のペーペーであり、SQLiteに関してもほとんど知識はありません。この記事の内容通りに実装してエラーを起こしてデータベースにアクセスできなくなっても一切の保証は致しかねます。