2011年11月23日水曜日

テーブル一覧取得・表示


コマンドラインからは .tables で表示される。データベースのテーブル一覧を取得する方法。

Cursor c = db.rawQuery("SELECT * FROM sqlite_master WHERE type='table' ", null);

Log.d("個数", String.valueOf(c.getCount()));


ソースコード全体

package com.test;

import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class Test01Activity extends Activity {
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  // ヘルパークラスのインスタンスを作成します。
        MyDBHelper helper = new MyDBHelper(this);
        
        //書き込み可能でデータベースを開く 
        //(ここでDBファイルがなかったら作成する(onCreate)
        SQLiteDatabase db = helper.getWritableDatabase();
         
        Cursor c = db.rawQuery("SELECT * FROM sqlite_master WHERE type='table' ", null);

        Log.d("個数", String.valueOf(c.getCount()));
        
        boolean isEof = c.moveToFirst();
        TextView textView1 = (TextView)findViewById(R.id.textView1);
         
        String text="";
        while (isEof) {
            text += c.getString(1) + "\n";
            isEof = c.moveToNext();
        }
        textView1.setText(text);
         
        c.close();
        db.close();
    }
 
    public class MyDBHelper extends SQLiteOpenHelper {
         public MyDBHelper(Context context) {
             super(context, "database.db", null, 2);
         }
  
         @Override
         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
          //データベースのバージョンが変わる場合に呼び出される。
             db.execSQL(
                  "create table myDatabaseTable2("+
                  "name text not null,"+
                  "age text"+
                  ");"
              );
   
              // Insert文のSQLを実行してレコードを挿入
              db.execSQL("insert into myDatabaseTable2(name,age) values ('聖徳太子2', 10);");
              db.execSQL("insert into myDatabaseTable2(name,age) values ('夏目漱石2', 20);");
         }
  
         @Override
         //ここでデータベース作成(コンストラクタに渡されたDBファイル名が存在しない場合に呼ばれる)
         public void onCreate(SQLiteDatabase db) {
             // テームルを作成
             db.execSQL(
                 "create table myDatabaseTable("+
                 "name text not null,"+
                 "age text"+
                 ");"
             );
  
             // Insert文のSQLを実行してレコードを挿入
             db.execSQL("insert into myDatabaseTable(name,age) values ('聖徳太子', 10);");
             db.execSQL("insert into myDatabaseTable(name,age) values ('夏目漱石', 20);");
         }
     }
 }

その他の確認方法

関連記事

0 件のコメント:

コメントを投稿