まずAndroid SQLiteデータベースを作成するで作成した
SQLiteOpenHelperクラスを継承したDatabaseHelper.javaのインスタンスを作成します。
このDataBaseHelperインスタンスのgetWritableDatabase()メソッドでSQLiteDatabaseインスタンスを取得します。
DatabaseHelper dbHelper = new DataBaseHelper(); SQLiteDatabase db = new dbHelper.getWritableDatabase();
SQLiteDatabaseインスタンスには以下のようなメソッドがあります。
execSQL()メソッド:select以外のsql文を指定して実行します。実行に失敗した場合はSQLExceptionをスローします。
void execSQL(String sql)
execSQL()メソッド:select以外のsql文を指定して実行します。実行に失敗した場合はSQLExceptionをスローします。
引数bindArgsにはsql文でパラメータ(?で指定)に置き換わる値を指定します。指定できる値の型はbyte[]、String、Long、Doubleのみ。
void execSQL(String sql,Object[] bindArgs)
insert()メソッド:テーブルにデータを追加します。
戻り値は正常に挿入でき場合RowIDが戻り、失敗した場合は-1が戻ります。
引数tableにはテーブル名を指定します。
引数nullColumnHackにはデータを挿入する際、Null値が許されない列に値が指定されていない場合、代わりに利用される値を指定します。
引数valuesには登録レコードの列名と値がマッピングされたContentValuesインスタンスを設定します。
long insert(String table, String nullColumnHack, ContentValues values)
update()メソッド:テーブルにデータを更新します。
戻り値は正常に更新でき場合が更新したレコード数が戻り、失敗した場合は-1が戻ります。
引数tableにはテーブル名を指定します。
引数valuesには更新レコードの列名と値がマッピングされたContentValuesインスタンスを設定します。
引数whereClauseには更新対象レコードを検索するための条件を指定します。
引数whereArgsにはwhereClauseにパラメータ(?で指定)が含まれる場合に置き変わる値を指定します。不要な場合はnullを指定します。
int update(String table, ContentValues values, String whereClause, String[] whereArgs)
delete()メソッド:テーブルからデータを削除します。
引数tableにはテーブル名を指定します。
引数whereClauseには削除対象レコードを検索するための条件を指定します。
引数whereArgsにはwhereClauseにパラメータ(?で指定)が含まれる場合に置き変わる値を指定します。不要な場合はnullを指定します。
int delete(String table, String whereClause, String[] whereArgs)
データベースにデータを登録・更新・削除を行うサンプルコードです。
MainActivty.java
package my.study.android;
import android.app.Activity;
import android.content.ContentValues;
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.Toast;
public class MainActivity extends Activity {
/* InsertボタンのClickリスナー */
private OnClickListener buttonInsert_ClickListener = new OnClickListener(){
public void onClick(View v) {buttonInsert_Click(v);}};
/* UpdateボタンのClickリスナー */
private OnClickListener buttonUpdate_ClickListener = new OnClickListener(){
public void onClick(View v) {buttonUpdate_Click(v);}};
/* DeleteボタンのClickリスナー */
private OnClickListener buttonDelete_ClickListener = new OnClickListener(){
public void onClick(View v) {buttonDelete_Click(v);}};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//ボタンにClickリスナーを設定する。
Button buttonInsert = (Button)this.findViewById(R.id.buttonInsert);
buttonInsert.setOnClickListener(buttonInsert_ClickListener);
Button buttonUpdate = (Button)this.findViewById(R.id.buttonUpdate);
buttonUpdate.setOnClickListener(buttonUpdate_ClickListener);
Button buttonDelete = (Button)this.findViewById(R.id.buttonDelete);
buttonDelete.setOnClickListener(buttonDelete_ClickListener);
}
/*
* InsertボタンClick処理
*/
private void buttonInsert_Click(View v){
ContentValues values = new ContentValues();
values.put("Name", "yan");
values.put("Tel", "0000-1234-5678");
values.put("Age", 18);
DatabaseHelper dbHelper = new DatabaseHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
long ret;
try {
ret = db.insert("MyTable", null, values);
} finally {
db.close();
}
if (ret == -1) {
Toast.makeText(this, "Insert失敗", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Insert成功", Toast.LENGTH_SHORT).show();
}
}
/*
* UpdateボタンClick処理
*/
private void buttonUpdate_Click(View v){
ContentValues values = new ContentValues();
values.put("Age",24);
String whereClause = "No = ?";
String whereArgs[] = new String[1];
whereArgs[0] = "1";
DatabaseHelper dbHelper = new DatabaseHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
int ret;
try {
ret = db.update("MyTable", values, whereClause, whereArgs);
} finally {
db.close();
}
if (ret == -1){
Toast.makeText(this, "Update失敗", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Update成功", Toast.LENGTH_SHORT).show();
}
}
/* DeleteボタンClick処理 */
private void buttonDelete_Click(View v){
String whereClause = "No = ?";
String whereArgs[] = new String[1];
whereArgs[0] = "1";
DatabaseHelper dbHelper = new DatabaseHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
int ret;
try {
ret = db.delete("MyTable", whereClause, whereArgs);
} finally {
db.close();
}
if (ret == -1){
Toast.makeText(this, "Delete失敗", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Delete成功", Toast.LENGTH_SHORT).show();
}
}
}
DatabaseHelper.java
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
/* データベース名 */
private final static String DB_NAME = "androidstudydb";
/* データベースのバージョン */
private final static int DB_VER = 1;
/*
* コンストラクタ
*/
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VER);
}
/*
* onCreateメソッド
* データベースが作成された時に呼ばれます。
* テーブルの作成などを行います。
*/
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "";
sql += "create table MyTable (";
sql += " No integer primary key autoincrement";
sql += ",Name text not null";
sql += ",Tel text";
sql += ",Age integer";
sql += ")";
db.execSQL(sql);
}
/*
* onUpgradeメソッド
* onUpgrade()メソッドはデータベースをバージョンアップした時に呼ばれます。
* 現在のレコードを退避し、テーブルを再作成した後、退避したレコードを戻すなどの処理を行います。
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
MainActivityのレイアウト(main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/buttonInsert" android:text="Insert">
</Button>
<Button
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/buttonUpdate" android:text="Update">
</Button>
<Button
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/buttonDelete" android:text="Delete">
</Button>
</LinearLayout>
【関連項目】
Android SQLiteデータベースを作成する
Android SQLiteのGUIツール
Android データベースにデータを書き込む(Insert、Update、Delete)
Android データベースのデータを読み込む(Select)
Android SQLiteデータベースを作成する(SQL文をリソースファイルに定義する)
0 件のコメント:
コメントを投稿