【Android】SQLiteデータベースを作成、テーブル作成、レコード抽出など

Bookmark this on Livedoor Clip
LINEで送る

最近覚えたのでおさらいに記事にしてみます。
概ね、タイトル通りです。
Java初心者の為、表現が間違っているかもしれません、ご容赦下さい(´・ω・`)

今回は

  • データベース作成
  • テーブル作成
  • レコード追加
  • セレクト文でレコード取り出す
までやってみます。



参考にした書籍はこちら





importに追加したのはこの二行。
1import android.database.*;
2import android.database.sqlite.*;





データベースを作成

内部メモリにDBを作成します。
openOrCreateDatabaseの引数にファイル名を渡してDBを作成。
1String dbStr = "data/data/" + getPackageName() + "/Sample.db";
2SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbStr,  null );






テーブルを作成


ここから先は作成したデータベースにSQL文を使ってデータを操作する形になります。

例では

idname
0名前
1名前1
2名前2

カラムはIDと名前だけのシンプルなmemberテーブルを作ってみます。


テーブル作成用のクエリを用意して、
execSQL関数で実行。これでテーブル名「membar」が作成されます。
1String query_table1 = "DROP TABLE IF EXISTS menber";
2String query_table2 = "CREATE TABLE menber" + " ( id INTEGER PRIMARY KEY , name  STRING ) ";
3db.execSQL(query_table1);






レコードを追加


次にmemberテーブルにレコードを追加します。
先程と同じようにレコード追加用のクエリを用意して、
execSQL関数で実行します。

01String query_record_set[]   =     { "INSERT INTO menber( name ) VALUES ( 'レミリア・スカーレット' ) ",
02                                    "INSERT INTO menber( name ) VALUES ( '十六夜咲夜' ) ",
03                                    "INSERT INTO menber( name ) VALUES ( 'パチュリー・ノーレッジ' ) ",
04                                    "INSERT INTO menber( name ) VALUES ( '小悪魔' ) ",
05                                    "INSERT INTO menber( name ) VALUES ( '紅美鈴' ) ",
06                                    "INSERT INTO menber( name ) VALUES ( 'チルノ' ) ",
07                                    "INSERT INTO menber( name ) VALUES ( 'ルーミア' ) " };
08 
09for( int i=0; i<query_record_set.length; i++){
10    db.execSQL(query_record_set[i]);
11}






セレクト文でレコード取り出す


レコードに追加したデータをSELECT文で取得します。
Androidでは取得したデータを取り出す時は
Cursorクラス使わないといけないみたいです。

01String query_select ="SELECT * FROM menber";
02 
03 
04Cursor cursor = db.rawQuery(query_select, null);
05startManagingCursor(cursor);
06 
07String result_str = "";
08 
09while( cursor.moveToNext() ){
10    int index_id    =   cursor.getColumnIndex("id");
11    int index_name  =   cursor.getColumnIndex("name");
12    int id          =   cursor.getInt(index_id);
13    String name     =   cursor.getString(index_name);
14    result_str     += "ID: " + id + " 名前:" +  name + "\n";
15}






上記のソースをまとめたもの。



01package sample.com.sample001;
02 
03import android.app.Activity;
04import android.os.Bundle;
05import android.widget.LinearLayout;
06import android.widget.TextView;
07import android.database.*;
08import android.database.sqlite.*;
09 
10public class Sample001Activity extends Activity {
11    @Override
12    public void onCreate(Bundle savedInstanceState) {
13        super.onCreate(savedInstanceState);
14        LinearLayout ll = new LinearLayout(this);
15        ll.setOrientation(LinearLayout.HORIZONTAL);
16        setContentView(ll);
17 
18        //データベースを作成
19        String dbStr = "data/data/" + getPackageName() + "/Sample.db";
20        SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbStr,  null );
21 
22        //テーブル作成用のクエリ文
23        String query_table1 = "DROP TABLE IF EXISTS menber";
24        String query_table2 = "CREATE TABLE menber" + " ( id INTEGER PRIMARY KEY , name  STRING ) ";
25 
26        //テーブルの作成
27        db.execSQL(query_table1);
28        db.execSQL(query_table2);
29 
30        //レコード作成用のクエリ文(INSERT)
31        String query_record_set[]   =   {
32          "INSERT INTO menber( name ) VALUES ( 'レミリア・スカーレット' ) ",
33          "INSERT INTO menber( name ) VALUES ( '十六夜咲夜' ) ",
34          "INSERT INTO menber( name ) VALUES ( 'パチュリー・ノーレッジ' ) ",
35          "INSERT INTO menber( name ) VALUES ( '小悪魔' ) ",
36          "INSERT INTO menber( name ) VALUES ( '紅美鈴' ) ",
37          "INSERT INTO menber( name ) VALUES ( 'チルノ' ) ",
38          "INSERT INTO menber( name ) VALUES ( 'ルーミア' ) " };
39 
40        //レコード作成
41        for( int i=0; i<query_record_set.length; i++){
42          db.execSQL(query_record_set[i]);
43        }
44 
45 
46        //レコード検索用のクエリ文(SELECT)
47        String query_select ="SELECT * FROM menber";
48 
49 
50        Cursor cursor = db.rawQuery(query_select, null);
51        startManagingCursor(cursor);
52 
53        String result_str = "";
54 
55        while( cursor.moveToNext() ){
56          int index_id    =   cursor.getColumnIndex("id");
57          int index_name  =   cursor.getColumnIndex("name");
58          int id          =   cursor.getInt(index_id);
59          String name     =   cursor.getString(index_name);
60          result_str      += "ID: " + id + " 名前:" +  name + "\n";
61        }
62 
63        //内容表示用のTextView
64 
65        TextView tv = new TextView(this);
66        tv.setText( result_str );
67        ll.addView(tv);
68 
69    }
70}


【実行結果】
sample20120616実行結果

全件表示






47行目のSELECT文を変更すると
1String query_select ="SELECT * FROM menber WHERE id=5";



sample20120616実行結果

id5のみ表示



実行結果が変わります

Bookmark this on Livedoor Clip
LINEで送る

関連記事

【Android】SQLiteデータベースを作成、テーブル作成、レコード抽出など” への1件のコメント

  1. ピンバック: 【Andoird】サンプルアプリ第2弾「巫女さんおみくじ」公開しました | 桜花満開