最近覚えたのでおさらいに記事にしてみます。
概ね、タイトル通りです。
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弾「巫女さんおみくじ」公開しました | 桜花満開