ラベル データベース の投稿を表示しています。 すべての投稿を表示
ラベル データベース の投稿を表示しています。 すべての投稿を表示

2012年9月27日木曜日

assetsフォルダのデータベース利用2

圧縮されているデータベースを解凍してコピーする。

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import android.app.Activity;
import android.content.Context;
import android.content.res.AssetManager;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;

public class KenpoActivity extends Activity {

 private String DB_PATH;
 private String DB_NAME;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  Log.i("kenpoActivity", "onCreate()");

  setContentView(R.layout.minpo);

  DB_PATH = "/data/data/" + this.getPackageName() + "/databases/";//
  DB_NAME = "ropou.db";


  DatabaseHelper dbHelper = new DatabaseHelper(this, DB_NAME, null, 1);

  //データベースが在るか確認する
  boolean DatabaseCheck = databaseExists(DB_PATH,DB_NAME);

  if(DatabaseCheck){
   Log.i("kenpoActivity", "データベース在り" );
  }else{
   //データベースが無い場合assetsフォルダのデータベースをコピー
   Log.i("kenpoActivity", "データベース無し" );

   //空のデータベース作成
   dbHelper.createEmptyDataBase();

   //データベースコピー
   //databaseCopy(DB_PATH,DB_NAME);

   //データベースが圧縮されている場合
   databaseUnZipCopy(DB_PATH,DB_NAME);
  }

 }

 /*
  * データベースの存在確認
  */
 private boolean databaseExists(String path, String name) {
  // TODO 自動生成されたメソッド・スタブ
  SQLiteDatabase checkDb = null;

  try {
   String dbPath = path + DB_NAME;
   checkDb = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READONLY);
  } catch (SQLiteException e) {
   // データベースはまだ存在していない
   Log.i("kenpoActivity", "データベースが無い");
  }

  if (checkDb != null) {
   Log.i("kenpoActivity", "データベースが在る");
   checkDb.close();
  }

  return checkDb != null ? true : false;
 }

 /*
  * データベースのコピー
  */
 private void databaseCopy(String path, String name) {
  // TODO 自動生成されたメソッド・スタブ

  try {
   InputStream mInput = this.getAssets().open( name );//assetsフォルダのデータベース

   // デフォルトのデータベースパスに作成した空のDB
   String outFileName = path + DB_NAME;

   OutputStream mOutput = new FileOutputStream(outFileName);

   // コピー
   byte[] buffer = new byte[1024];
   int size;
   while ((size = mInput.read(buffer)) > 0) {
    mOutput.write(buffer, 0, size);
   }

   // Close the streams
   mOutput.flush();
   mOutput.close();
   mInput.close();

  } catch (IOException e) {
   // TODO 自動生成された catch ブロック
   e.printStackTrace();
  }

 }

 /*
  * データベースのコピー 圧縮されている場合
  */
 private void databaseUnZipCopy(String path, String name) {
  // TODO 自動生成されたメソッド・スタブ
  try {
   AssetManager am = getResources().getAssets();
   InputStream is = am.open("ropou.zip",AssetManager.ACCESS_STREAMING);
   ZipInputStream zis = new ZipInputStream(is);
   ZipEntry ze = zis.getNextEntry();

   if (ze != null) {
    String fullPath = path + DB_NAME;

    FileOutputStream fos = new FileOutputStream(fullPath, false);
    byte[] buf = new byte[1024];
    int size = 0;

    while ((size = zis.read(buf, 0, buf.length)) > -1) {
     fos.write(buf, 0, size);
    }
    fos.close();
    zis.closeEntry();
   }
   zis.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 /*
  * データベースヘルパー
  */
 public class DatabaseHelper extends SQLiteOpenHelper {

  public DatabaseHelper(Context context, String name, CursorFactory factory, int version) {
   super(context, name, factory, version);
   // TODO 自動生成されたコンストラクター・スタブ
  }

  @Override
  public void onCreate(SQLiteDatabase db) {
   // TODO 自動生成されたメソッド・スタブ

  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   // TODO 自動生成されたメソッド・スタブ

  }

  //空のデータベース作成
  public void createEmptyDataBase(){
   Log.i("kenpoActivity", "空のデータベース作成" );

   this.getReadableDatabase();
  }
 }

}


空のデータベース作成する部分は、databases フォルダがある場合は必要ないが、
アプリをインストールした時には、databases フォルダが無いので必要になる、
作成されるデータベースのパーミッションもちゃんと設定できるので、
空のデータベースを作成する部分は必要

2012年8月20日月曜日

データベースの作成:sqlite

SQLiteOpenHelper クラスを使わないでデータベースの作成

import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //データベース作成
        SQLiteDatabase db;
        
        db = openOrCreateDatabase( "TestData.db" , SQLiteDatabase.CREATE_IF_NECESSARY , null );
        
        //テーブル作成
        String sql = "CREATE TABLE IF NOT EXISTS table_name (" 
          + "id INTEGER PRIMARY KEY AUTOINCREMENT,"
          + "name TEXT);";
  
        db.execSQL(sql);

        //レコードの追加
        ContentValues val = new ContentValues();
        val.put( "name", "sakkura" );
        db.insert( "table_name", null, val );
        
        db.close();

    }

}


2011年11月23日水曜日

データベース一覧取得・表示


/data/data/アプリケーション名/databases フォルダ内のファイル名の一覧取得・表示

package com.test;

import android.app.Activity;
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);

  //Context con = this;
  String[] str = this.databaseList();
  Log.d("個数", String.valueOf(str.length));

  TextView textView1 = (TextView) findViewById(R.id.textView1);

  String text = "";

  for (int i = 0; i < str.length; i++) {
   text += str[i] + "\n";
  }
  textView1.setText(text);
 }
}

テーブル一覧取得・表示


コマンドラインからは .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);");
         }
     }
 }

その他の確認方法

2011年5月29日日曜日

レコードの更新

id 番号を指定してレコードの内容を更新する。

package com.myDatabase;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.ContentValues;
import android.content.Context;

public class MyDatabase 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.query("myDatabaseTable", new String[] {"id", "name", "age"  },
          null, null, null, null, null);

        boolean isEof = c.moveToFirst();
        TextView textView1 = (TextView)findViewById(R.id.textView1);

        String text="";
        while (isEof) {
            text += String.format("%d : %s : %d歳\r\n", c.getInt(0),c.getString(1), c.getInt(2));
            isEof = c.moveToNext();
        }

        textView1.setText(text);

        c.close();
        db.close();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
    

    //レコードの更新ボタンが押された時
    public void SetRecordOnClick(View v) {
     MyDBHelper helper = new MyDBHelper(this);
     SQLiteDatabase db = helper.getWritableDatabase();

     ContentValues values = new ContentValues();

     //追加するデータ
     values.put("name", "データ更新");
     values.put("age", "100");
     
     db.update("myDatabaseTable",values, "id=1", null);

     //データの検索
        Cursor c = db.query("myDatabaseTable", new String[] {"id", "name", "age" },
          null, null, null, null, null);

        boolean isEof = c.moveToFirst();
        TextView textView1 = (TextView)findViewById(R.id.textView1);

        String text="";
        while (isEof) {
            text += String.format("%d : %s : %d歳\r\n", c.getInt(0),c.getString(1), c.getInt(2));
            isEof = c.moveToNext();
        }

        textView1.setText(text);

    }

    //DB利用には、SQLiteOpenHelper抽象クラスを継承する必要がある。
    public class MyDBHelper extends SQLiteOpenHelper {
        public MyDBHelper(Context context) {
            super(context, "database.db", null, 1);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
         //データベースのバージョンが変わる場合に呼び出される。
        }

        @Override
        //ここでデータベース作成(コンストラクタに渡されたDBファイル名が存在しない場合に呼ばれる)
        public void onCreate(SQLiteDatabase db) {
            // テームルを作成
            db.execSQL(
                "create table myDatabaseTable("+
                "id INTEGER PRIMARY KEY AUTOINCREMENT,"+
                "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);");
        }
    }
}

ダウンロード

レコードの削除


id番号を指定してレコードを削除する。
package com.myDatabase;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.ContentValues;
import android.content.Context;

public class MyDatabase 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.query("myDatabaseTable", new String[] {"id", "name", "age"  },
          null, null, null, null, null);

        boolean isEof = c.moveToFirst();
        TextView textView1 = (TextView)findViewById(R.id.textView1);

        String text="";
        while (isEof) {
            text += String.format("%d : %s : %d歳\r\n", c.getInt(0),c.getString(1), c.getInt(2));
            isEof = c.moveToNext();
        }

        textView1.setText(text);

        c.close();
        db.close();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
    
    //レコード削除ボタンが押された時
    public void DeleteRecordOnClick(View v) {
     MyDBHelper helper = new MyDBHelper(this);
     SQLiteDatabase db = helper.getWritableDatabase();
     
     db.delete("myDatabaseTable", "id=1", null);
     
     //表示データを更新
        Cursor c = db.query("myDatabaseTable", new String[] {"id", "name", "age" },
          null, null, null, null, null);

        boolean isEof = c.moveToFirst();
        TextView textView1 = (TextView)findViewById(R.id.textView1);

        String text="";
        while (isEof) {
            text += String.format("%d : %s : %d歳\r\n", c.getInt(0),c.getString(1), c.getInt(2));
            isEof = c.moveToNext();
        }

        textView1.setText(text);
     
    }

    //レコードを追加ボタンが押された時
    public void SetRecordOnClick(View v) {
     MyDBHelper helper = new MyDBHelper(this);
     SQLiteDatabase db = helper.getWritableDatabase();

     ContentValues values = new ContentValues();

     //追加するデータ
     values.put("name", "新しいデータ");
     values.put("age", "1");
     db.insert("myDatabaseTable", null, values);

     //データの検索
        Cursor c = db.query("myDatabaseTable", new String[] {"id", "name", "age" },
          null, null, null, null, null);

        boolean isEof = c.moveToFirst();
        TextView textView1 = (TextView)findViewById(R.id.textView1);

        String text="";
        while (isEof) {
            text += String.format("%d : %s : %d歳\r\n", c.getInt(0),c.getString(1), c.getInt(2));
            isEof = c.moveToNext();
        }

        textView1.setText(text);

    }

    //DB利用には、SQLiteOpenHelper抽象クラスを継承する必要がある。
    public class MyDBHelper extends SQLiteOpenHelper {
        public MyDBHelper(Context context) {
            super(context, "database.db", null, 1);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
         //データベースのバージョンが変わる場合に呼び出される。
        }

        @Override
        //ここでデータベース作成(コンストラクタに渡されたDBファイル名が存在しない場合に呼ばれる)
        public void onCreate(SQLiteDatabase db) {
            // テームルを作成
            db.execSQL(
                "create table myDatabaseTable("+
                "id INTEGER PRIMARY KEY AUTOINCREMENT,"+
                "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);");
        }
    }
}

ダウンロード

レコードの追加

ボタンクリックでレコードを追加してみる

package com.myDatabase;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.ContentValues;
import android.content.Context;

public class MyDatabase 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.query("myDatabaseTable", new String[] { "name", "age" },
          null, null, null, null, null);

        boolean isEof = c.moveToFirst();
        TextView textView1 = (TextView)findViewById(R.id.textView1);

        String text="";
        while (isEof) {
            text += String.format("%s : %d歳\r\n", c.getString(0), c.getInt(1));
            isEof = c.moveToNext();
        }

        textView1.setText(text);

        c.close();
        db.close();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
    
    public void SetRecordOnClick(View v) {
     MyDBHelper helper = new MyDBHelper(this);
     SQLiteDatabase db = helper.getWritableDatabase(); 
     
     ContentValues values = new ContentValues();
     
     //追加するデータ
     values.put("name", "新しいデータ");
     values.put("age", "1");
     db.insert("myDatabaseTable", null, values);
     
     //データの検索
        Cursor c = db.query("myDatabaseTable", new String[] { "name", "age" },
          null, null, null, null, null);

        boolean isEof = c.moveToFirst();
        TextView textView1 = (TextView)findViewById(R.id.textView1);

        String text="";
        while (isEof) {
            text += String.format("%s : %d歳\r\n", c.getString(0), c.getInt(1));
            isEof = c.moveToNext();
        }

        textView1.setText(text);

    }

    //DB利用には、SQLiteOpenHelper抽象クラスを継承する必要がある。
    public class MyDBHelper extends SQLiteOpenHelper {
        public MyDBHelper(Context context) {
            super(context, "database.db", null, 1);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
         //データベースのバージョンが変わる場合に呼び出される。
        }

        @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);");
        }
    }
}

ダウンロード

レコード検索

プロジェクトを作成して/res/layout/main.xml にTextViewコントロールを配置して、
TextViewコントロール にデータベースの内容を表示する。


package com.myDatabase;

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

public class MyDatabase 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.query("myDatabaseTable", new String[] { "name", "age" },
          null, null, null, null, null);
        
        boolean isEof = c.moveToFirst();
        TextView textView1 = (TextView)findViewById(R.id.textView1);
        
        String text="";
        while (isEof) {
            text += String.format("%s : %d歳\r\n", c.getString(0), c.getInt(1));
            isEof = c.moveToNext();
        }
        textView1.setText(text);
        
        c.close();
        db.close();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    //DB利用には、SQLiteOpenHelper抽象クラスを継承する必要がある。
    public class MyDBHelper extends SQLiteOpenHelper {
        public MyDBHelper(Context context) {
            super(context, "database.db", null, 1);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
         //データベースのバージョンが変わる場合に呼び出される。
        }

        @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);");
        }
    }
}

SQLiteDatabase.query()メソッドの
第一引数はテーブル名。
第二引数は、取得する列名(カラム名、フィールド名)の配列を指定。
第三引数、第四引数は取得するレコードの条件を指定。
第五引数は、group by句を指定。
第六引数は、Having句を指定。
第七引数は、order by句を指定。
第八引数は、limit句(取得するレコードの上限数)を指定。
使わない場合は、nullを指定。
ダウンロード

2011年5月28日土曜日

データベースを確認-adbシェル

コマンドプロンプトを開いて
D:\androidSDKをインストールした場所\platform-tools>adb shell

dataフォルダの中のdata に移動
# cd data/data

パッケージ名/datadases に移動
# cd com.myDatabase/databases

SQLiteを起動する。
# sqlite3 database.db
sqlite3 database.db
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>


テーブル一覧を表示する
sqlite> .table
.table
android_metadata  myDatabaseTable

テーブルデータの確認
sqlite> select * from myDatabaseTable;
select * from myDatabaseTable;
閨門セウ螟ェ蟄酢10
螟冗岼貍ア遏ウ|20
sqlite>

参考:
pwd:いまいるディレクトリの確認
ls:フォルダ内のファイル名一覧

データベースを確認-PupSQLite


DDMSパースペクティブ を表示させて

ファイル・エクスプローラを選択します。
data/data/パッケージ名/databases/ファイル名 を選択します。
右上のフロッピーのアイコンをクリックしてファイルを保存します。

PupSQLite をダウンロードしてきます。
PupSQLite を起動させてデータベースファイルを開きます。

データベースの作成

データベースを開いて確認する為にファイル名を指定してデータベースを作成する。

package com.myDatabase;

import android.app.Activity;
import android.os.Bundle;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.Context;

public class MyDatabase 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) 
        helper.getWritableDatabase();
        helper.getReadableDatabase().close();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    //DB利用には、SQLiteOpenHelper抽象クラスを継承する必要がある。
    public class MyDBHelper extends SQLiteOpenHelper {
        public MyDBHelper(Context context) {
            super(context, "database.db", null, 1);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
         //データベースのバージョンが変わる場合に呼び出される。
        }

        @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);");
        }
    }
}