最近覚えたのでおさらいに記事にしてみます。
概ね、タイトル通りです。
Java初心者の為、表現が間違っているかもしれません、ご容赦下さい(´・ω・`)
今回は
- データベース作成
- テーブル作成
- レコード追加
- セレクト文でレコード取り出す
までやってみます。
参考にした書籍はこちら
importに追加したのはこの二行。
1 | import android.database.*; |
2 | import android.database.sqlite.*; |
データベースを作成
内部メモリにDBを作成します。
openOrCreateDatabaseの引数にファイル名を渡してDBを作成。
1 | String dbStr = "data/data/" + getPackageName() + "/Sample.db" ; |
2 | SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbStr, null ); |
テーブルを作成
ここから先は作成したデータベースにSQL文を使ってデータを操作する形になります。
例では
カラムはIDと名前だけのシンプルなmemberテーブルを作ってみます。
テーブル作成用のクエリを用意して、
execSQL関数で実行。これでテーブル名「membar」が作成されます。
1 | String query_table1 = "DROP TABLE IF EXISTS menber" ; |
2 | String query_table2 = "CREATE TABLE menber" + " ( id INTEGER PRIMARY KEY , name STRING ) " ; |
3 | db.execSQL(query_table1); |
レコードを追加
次にmemberテーブルにレコードを追加します。
先程と同じようにレコード追加用のクエリを用意して、
execSQL関数で実行します。
01 | String 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 ( 'ルーミア' ) " }; |
09 | for ( int i= 0 ; i<query_record_set.length; i++){ |
10 | db.execSQL(query_record_set[i]); |
セレクト文でレコード取り出す
レコードに追加したデータをSELECT文で取得します。
Androidでは取得したデータを取り出す時は
Cursorクラス使わないといけないみたいです。
01 | String query_select = "SELECT * FROM menber" ; |
04 | Cursor cursor = db.rawQuery(query_select, null ); |
05 | startManagingCursor(cursor); |
07 | String result_str = "" ; |
09 | while ( 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" ; |
上記のソースをまとめたもの。
01 | package sample.com.sample001; |
03 | import android.app.Activity; |
04 | import android.os.Bundle; |
05 | import android.widget.LinearLayout; |
06 | import android.widget.TextView; |
07 | import android.database.*; |
08 | import android.database.sqlite.*; |
10 | public class Sample001Activity extends Activity { |
12 | public void onCreate(Bundle savedInstanceState) { |
13 | super .onCreate(savedInstanceState); |
14 | LinearLayout ll = new LinearLayout( this ); |
15 | ll.setOrientation(LinearLayout.HORIZONTAL); |
19 | String dbStr = "data/data/" + getPackageName() + "/Sample.db" ; |
20 | SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbStr, null ); |
23 | String query_table1 = "DROP TABLE IF EXISTS menber" ; |
24 | String query_table2 = "CREATE TABLE menber" + " ( id INTEGER PRIMARY KEY , name STRING ) " ; |
27 | db.execSQL(query_table1); |
28 | db.execSQL(query_table2); |
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 ( 'ルーミア' ) " }; |
41 | for ( int i= 0 ; i<query_record_set.length; i++){ |
42 | db.execSQL(query_record_set[i]); |
47 | String query_select = "SELECT * FROM menber" ; |
50 | Cursor cursor = db.rawQuery(query_select, null ); |
51 | startManagingCursor(cursor); |
53 | String result_str = "" ; |
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" ; |
65 | TextView tv = new TextView( this ); |
66 | tv.setText( result_str ); |
【実行結果】

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

id5のみ表示
実行結果が変わります
ピンバック: 【Andoird】サンプルアプリ第2弾「巫女さんおみくじ」公開しました | 桜花満開