まず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 件のコメント:
コメントを投稿