「研究しましょう」 ブログ 日記 マガジン 小耳情報

    やりたいことを探してネットをさまよう、そんな私のブログです --- I'm here. Find me out. 我在这里 查找和
0

【Android な夜に】SQLite なのか SQL の仕様なのか、テーブル名に『-』を入れてたら、いきなり落ちた   #Androidプログラミング入門 #GRATINA4G #kyf31 #AQUOSK #SHF32 #SQLite

 DB ファイルを /data/data/ 以外のところに作ろうとして、はまった。実際は、DBファイルの場所を変えるのは正しいコードだったんだけど、テーブルを作る部分で、テープル名に、

  「 TABLE-001 」

のように「-」ハイフォンを使ったのが原因だった。これで、テーブルを作るところで Exception をおこしていた。SQLite の仕様か SQL の仕様か、とにかくここを直したらうまくいった。

 SQLite は SimpleDatabaseHelper クラスを使ってアクセスした。/data/data/ の下にDBファイルを作りたくないときは、

  static final private String DBNAME = "mouth_movie.sqlite";

のファイル名のところに、

  DBNAME = "/temp/user/mouth_movie.sqlite";

みたいな形で、フルパスで設定すれば、そこに作られる。

このクラスは、DBファイルが作られるときに、1回だけ、onCreate() でテーブルを作る様になっている。これ、そこで作らない方が、いい。そこの db.execSQL() でテーブルを作っているところを、そっくりそのまま、別のところに書けばいい。

あと、DBを作るところは、

try {
db_helper = new SimpleDatabaseHelper(this, dbname);
db_sql = db_helper.getWritableDatabase();
// メディアスキャナにスキャンさせる
//(ギャラリーに反映させ「外部ストレージ」に表示させる)
MediaScannerConnection.scanFile(this, new String[]{
DBPath.toString()
}, null, null);
} catch( Exception e) {
String error = e.toString();
}

のように、かならず Exception をキャッチしてやらないと、デバッグで苦労するので、手を抜かない様に。

  db_helper = new SimpleDatabaseHelper(this, dbname);

のところで、私は、SimpleDatabaseHelper() の引数に DBファイル名を渡して、

public SimpleDatabaseHelper(Context context,String db_name ) {
super(context, db_name, null, VERSION);
}

のように、新しいコンストラクタを作った。以上!

あぁ、こんな書き方して、誰かの参考になるんだろうか?手の抜きすぎかも。

 さてと、明日は、インテントで別なアクティビティを起動するところを作ろう。

あ、そうだ、動画を録画するところも、ちゃんとまとめて、メモしないとね。かなり手こずったから。

該当の記事は見つかりませんでした。

Leave a reply






管理者にだけ表示を許可する