最近覚えたのでおさらいに記事にしてみます。
概ね、タイトル通りです。
Java初心者の為、表現が間違っているかもしれません、ご容赦下さい(´・ω・`)
今回は
- データベース作成
- テーブル作成
- レコード追加
- セレクト文でレコード取り出す
参考にした書籍はこちら
importに追加したのはこの二行。
import android.database.*; import android.database.sqlite.*;
データベースを作成
内部メモリにDBを作成します。openOrCreateDatabaseの引数にファイル名を渡してDBを作成。
String dbStr = "data/data/" + getPackageName() + "/Sample.db"; SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbStr, null );
テーブルを作成
ここから先は作成したデータベースにSQL文を使ってデータを操作する形になります。
例では
id | name |
---|---|
0 | 名前 |
1 | 名前1 |
2 | 名前2 |
カラムはIDと名前だけのシンプルなmemberテーブルを作ってみます。
テーブル作成用のクエリを用意して、
execSQL関数で実行。これでテーブル名「membar」が作成されます。
String query_table1 = "DROP TABLE IF EXISTS menber"; String query_table2 = "CREATE TABLE menber" + " ( id INTEGER PRIMARY KEY , name STRING ) "; db.execSQL(query_table1);
レコードを追加
次にmemberテーブルにレコードを追加します。
先程と同じようにレコード追加用のクエリを用意して、
execSQL関数で実行します。
String query_record_set[] = { "INSERT INTO menber( name ) VALUES ( 'レミリア・スカーレット' ) ", "INSERT INTO menber( name ) VALUES ( '十六夜咲夜' ) ", "INSERT INTO menber( name ) VALUES ( 'パチュリー・ノーレッジ' ) ", "INSERT INTO menber( name ) VALUES ( '小悪魔' ) ", "INSERT INTO menber( name ) VALUES ( '紅美鈴' ) ", "INSERT INTO menber( name ) VALUES ( 'チルノ' ) ", "INSERT INTO menber( name ) VALUES ( 'ルーミア' ) " }; for( int i=0; i<query_record_set.length; i++){ db.execSQL(query_record_set[i]); }
セレクト文でレコード取り出す
レコードに追加したデータをSELECT文で取得します。
Androidでは取得したデータを取り出す時は
Cursorクラス使わないといけないみたいです。
String query_select ="SELECT * FROM menber"; Cursor cursor = db.rawQuery(query_select, null); startManagingCursor(cursor); String result_str = ""; while( cursor.moveToNext() ){ int index_id = cursor.getColumnIndex("id"); int index_name = cursor.getColumnIndex("name"); int id = cursor.getInt(index_id); String name = cursor.getString(index_name); result_str += "ID: " + id + " 名前:" + name + "\n"; }
上記のソースをまとめたもの。
package sample.com.sample001; import android.app.Activity; import android.os.Bundle; import android.widget.LinearLayout; import android.widget.TextView; import android.database.*; import android.database.sqlite.*; public class Sample001Activity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll = new LinearLayout(this); ll.setOrientation(LinearLayout.HORIZONTAL); setContentView(ll); //データベースを作成 String dbStr = "data/data/" + getPackageName() + "/Sample.db"; SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbStr, null ); //テーブル作成用のクエリ文 String query_table1 = "DROP TABLE IF EXISTS menber"; String query_table2 = "CREATE TABLE menber" + " ( id INTEGER PRIMARY KEY , name STRING ) "; //テーブルの作成 db.execSQL(query_table1); db.execSQL(query_table2); //レコード作成用のクエリ文(INSERT) String query_record_set[] = { "INSERT INTO menber( name ) VALUES ( 'レミリア・スカーレット' ) ", "INSERT INTO menber( name ) VALUES ( '十六夜咲夜' ) ", "INSERT INTO menber( name ) VALUES ( 'パチュリー・ノーレッジ' ) ", "INSERT INTO menber( name ) VALUES ( '小悪魔' ) ", "INSERT INTO menber( name ) VALUES ( '紅美鈴' ) ", "INSERT INTO menber( name ) VALUES ( 'チルノ' ) ", "INSERT INTO menber( name ) VALUES ( 'ルーミア' ) " }; //レコード作成 for( int i=0; i<query_record_set.length; i++){ db.execSQL(query_record_set[i]); } //レコード検索用のクエリ文(SELECT) String query_select ="SELECT * FROM menber"; Cursor cursor = db.rawQuery(query_select, null); startManagingCursor(cursor); String result_str = ""; while( cursor.moveToNext() ){ int index_id = cursor.getColumnIndex("id"); int index_name = cursor.getColumnIndex("name"); int id = cursor.getInt(index_id); String name = cursor.getString(index_name); result_str += "ID: " + id + " 名前:" + name + "\n"; } //内容表示用のTextView TextView tv = new TextView(this); tv.setText( result_str ); ll.addView(tv); } }
【実行結果】
47行目のSELECT文を変更すると
String query_select ="SELECT * FROM menber WHERE id=5";
実行結果が変わります
ピンバック: 【Andoird】サンプルアプリ第2弾「巫女さんおみくじ」公開しました | 桜花満開