package org.android.textbook.lesson5.sqlite;
import java.util.Random;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class SqliteSampleActivity extends Activity {
private SqliteDataBaseHelper mSqliteDataBaseHelper;
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sqlite_sample);
mSqliteDataBaseHelper = new SqliteDataBaseHelper(this);
Button insert = (Button) findViewById(R.id.button_insert);
insert.setOnClickListener(mOnClickListener);
Button delete = (Button) findViewById(R.id.button_delete);
delete.setOnClickListener(mOnClickListener);
Button update = (Button) findViewById(R.id.button_update);
update.setOnClickListener(mOnClickListener);
Button sample = (Button) findViewById(R.id.button_reset);
sample.setOnClickListener(mOnClickListener);
Button show = (Button) findViewById(R.id.button_show);
show.setOnClickListener(mOnClickListener);
Button query = (Button) findViewById(R.id.button_query);
query.setOnClickListener(mOnClickListener);
mTextView = (TextView) findViewById(R.id.text_db);
}
private OnClickListener mOnClickListener = new OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.button_insert:
insert();
show();
break;
case R.id.button_delete:
delete();
show();
break;
case R.id.button_update:
update();
show();
break;
case R.id.button_reset:
reset();
show();
break;
case R.id.button_show:
show();
break;
case R.id.button_query:
SQLiteDatabase db = mSqliteDataBaseHelper.getReadableDatabase();
Cursor cursor = query(db);
show(db, cursor);
break;
}
}
};
private static final int MAX_SAMPLE_DATA = 3;
private static final String[] NAME_ARRAY = new String[] {
"Kimura", "Kaname", "Fujita"
};
private static final int[] ENGLISH_ARRAY = new int[] {
55, 100, 80
};
private static final int[] JAPANESE_ARRAY = new int[] {
20, 55, 100
};
private static final int[] MATH_ARRAY = new int[] {
100, 80, 60
};
private void reset() {
SQLiteDatabase db = mSqliteDataBaseHelper.getWritableDatabase();
db.delete(SqliteDataBaseHelper.DB_TABLE, null, null);
for (int i = 0; i < MAX_SAMPLE_DATA; i++) {
ContentValues values = new ContentValues();
values.put(SqliteDataBaseHelper.DB_COLUMN_NAME, NAME_ARRAY[i]);
values.put(SqliteDataBaseHelper.DB_COLUMN_JAPANESE, JAPANESE_ARRAY[i]);
values.put(SqliteDataBaseHelper.DB_COLUMN_ENGLISH, ENGLISH_ARRAY[i]);
values.put(SqliteDataBaseHelper.DB_COLUMN_MATH, MATH_ARRAY[i]);
db.insert(SqliteDataBaseHelper.DB_TABLE, null, values);
}
db.close();
}
private void insert() {
SQLiteDatabase db = mSqliteDataBaseHelper.getWritableDatabase();
// 3人のデータをランダムにデータを追加する
Random rnd = new Random();
int index = rnd.nextInt(MAX_SAMPLE_DATA);
ContentValues values = new ContentValues();
values.put(SqliteDataBaseHelper.DB_COLUMN_NAME, NAME_ARRAY[index]);
values.put(SqliteDataBaseHelper.DB_COLUMN_JAPANESE,
JAPANESE_ARRAY[index]);
values.put(SqliteDataBaseHelper.DB_COLUMN_ENGLISH,
ENGLISH_ARRAY[index]);
values.put(SqliteDataBaseHelper.DB_COLUMN_MATH, MATH_ARRAY[index]);
// データの追加
db.insert(SqliteDataBaseHelper.DB_TABLE, null, values);
db.close();
}
private void delete() {
SQLiteDatabase db = mSqliteDataBaseHelper.getWritableDatabase();
// NameがKimuraのものをすべて削除
db.delete(SqliteDataBaseHelper.DB_TABLE,
SqliteDataBaseHelper.DB_COLUMN_NAME + " = ?",
new String[] {
NAME_ARRAY[0]
});
// db.delete(SqliteDataBaseHelper.DB_TABLE,
// SqliteDataBaseHelper.DB_COLUMN_NAME + " = '"
// + NAME_ARRAY[0] + "'", null);
db.close();
}
private Cursor query(SQLiteDatabase db) {
String[] columns = new String[] {
SqliteDataBaseHelper.DB_COLUMN_NAME,
SqliteDataBaseHelper.DB_COLUMN_ENGLISH
};
String selection = SqliteDataBaseHelper.DB_COLUMN_ENGLISH + ">=" + 60;
Cursor cursor = db.query(SqliteDataBaseHelper.DB_TABLE, columns, selection, null, null,
null, null);
return cursor;
}
private void update() {
ContentValues values = new ContentValues();
values.put(SqliteDataBaseHelper.DB_COLUMN_ENGLISH, 100);
SQLiteDatabase db = mSqliteDataBaseHelper.getWritableDatabase();
// NameがFujitaのデータのEnglishの項目をすべて100に更新する
// db.update(SqliteDataBaseHelper.DB_TABLE, values,
// SqliteDataBaseHelper.DB_COLUMN_NAME + " = ?", new String[] {
// NAME_ARRAY[2]
// });
db.update(SqliteDataBaseHelper.DB_TABLE, values,
SqliteDataBaseHelper.DB_COLUMN_NAME + " = '" + NAME_ARRAY[2] + "'", null);
db.close();
}
private void show() {
SQLiteDatabase db = mSqliteDataBaseHelper.getWritableDatabase();
Cursor cursor = db.query(SqliteDataBaseHelper.DB_TABLE, new String[] {
SqliteDataBaseHelper.DB_COLUMN_ID,
SqliteDataBaseHelper.DB_COLUMN_NAME,
SqliteDataBaseHelper.DB_COLUMN_JAPANESE,
SqliteDataBaseHelper.DB_COLUMN_ENGLISH,
SqliteDataBaseHelper.DB_COLUMN_MATH
}, null, null, null, null, null);
show(db, cursor);
}
private void show(SQLiteDatabase db, Cursor cursor) {
String str = new String();
cursor.moveToFirst();
int length = cursor.getCount();
int index = 0;
for (int i = 0; i < length; i++) {
index = cursor.getColumnIndex(SqliteDataBaseHelper.DB_COLUMN_ID);
if (index >= 0) {
long id = cursor.getLong(index);
str += "id: " + id + "\t";
}
index = cursor.getColumnIndex(SqliteDataBaseHelper.DB_COLUMN_NAME);
if (index >= 0) {
String name = cursor.getString(index);
str += "name: " + name + "\t";
}
index = cursor.getColumnIndex(SqliteDataBaseHelper.DB_COLUMN_JAPANESE);
if (index >= 0) {
String japanese = cursor.getString(index);
str += "japanese: " + japanese + "\t";
}
index = cursor.getColumnIndex(SqliteDataBaseHelper.DB_COLUMN_ENGLISH);
if (index >= 0) {
String english = cursor.getString(index);
str += "english: " + english + "\t";
}
index = cursor.getColumnIndex(SqliteDataBaseHelper.DB_COLUMN_MATH);
if (index >= 0) {
String math = cursor.getString(index);
str += "math: " + math;
}
str += "\n";
cursor.moveToNext();
}
cursor.close();
db.close();
mTextView.setText(str);
}
}