サンプルプログラムです
データベースにデータを書き込む
データベースの内容の確認は以下を参照してください
SQLiteのデータベースの保存場所
データベースの確認方法
まずはレイアウトのmain.xmlにボタンを3つ配置します
それぞれinsert用、update用、delete用です
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insert" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="update" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="delete" /> </LinearLayout>
次にDatabaseHelper.javaを少々変更します
テーブル内容はNo・Name・Tel・Ageと変わりませんが初期値を入力します
初期値もSQLコマンドで入力します
package blog.test; 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 = "blog_testdb"; // データベースのバージョン 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); //初期テーブル作成 db.execSQL("insert into MyTable(Name,Tel,age) values" + " ('山田',110 ,20);"); db.execSQL("insert into MyTable(Name,Tel,age) values " + "('田中',119 ,25);"); db.execSQL("insert into MyTable(Name,Tel,age) values" + " ('佐藤',117, 30);"); } /* * onUpgradeメソッド * onUpgrade()メソッドはデータベースをバージョンアップした時に呼ばれる */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
最後ににMainActivity.javaを変更します
やることとしては
・それぞれのボタンにsetOnClickListenerを持たせ押したときのイベントを取得する
・Insert Update deleteをボタンに割り振る
・更新の成否を判定する
の3つです
package blog.test; 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 implements OnClickListener { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle("MainActivity"); setContentView(R.layout.main); //データベースヘルパーのインスタンスを作成する(まだデータベースはできない) DatabaseHelper dbHelper = new DatabaseHelper(this); //データベースオブジェクトを取得する(データベースにアクセスすると作成される。) SQLiteDatabase db = dbHelper.getWritableDatabase(); //データベースを閉じる db.close(); /**それぞれのidを設定**/ Button button1=(Button)findViewById(R.id.button1); Button button2=(Button)findViewById(R.id.button2); Button button3=(Button)findViewById(R.id.button3); /**ボタンが押されたらonClickが動作するよう設定**/ button1.setOnClickListener(this); button2.setOnClickListener(this); button3.setOnClickListener(this); } /**ボタンが押された時の処理**/ public void onClick(View v){ //ContentValuesを作成して変更するデータを各ボタンで記入する ContentValues values = new ContentValues(); DatabaseHelper dbHelper = new DatabaseHelper(this); //データベースを書き込み可能にする SQLiteDatabase db = dbHelper.getWritableDatabase(); long ret; switch(v.getId()){ case R.id.button1://insertボタン values.put("Name", "高橋"); values.put("Tel", "999"); values.put("Age", 40); try {ret = db.insert("MyTable", null, values);} finally {db.close();}//データベースを閉じる if (ret == -1) {//insert失敗だとretに-1が返される Toast.makeText(this, "Insert失敗", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "Insert成功", Toast.LENGTH_SHORT).show(); } break; case R.id.button2://updateボタン values.put("Age",50);//Ageを50に変更する String whereClause = "No = ?";//検索条件にNoを指定 String whereArgs[] = new String[1]; whereArgs[0] = "1";//Noが1のものをアップデート try {ret = db.update("MyTable", values, whereClause, whereArgs);} finally {db.close(); } if (ret == -1){ //update失敗だとretに-1が返される Toast.makeText(this, "Update失敗", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "Update成功", Toast.LENGTH_SHORT).show(); } break; case R.id.button3://deleteボタン String whereClause2 = "No = ?"; //検索条件にNoを指定 String whereArgs2[] = new String[1]; whereArgs2[0] = "2";//Noが2のものをDelete try {ret = db.delete("MyTable", whereClause2, whereArgs2);} finally {db.close(); } if (ret == -1){ //delete失敗だとretに-1が返される Toast.makeText(this, "Delete失敗", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "Delete成功", Toast.LENGTH_SHORT).show(); } break; } } }
retに戻り値を入力してやり-1だったら更新失敗としています
では実際のデータベースがどのように変化したか見てみます
今回はFirefoxのSQLite Manegerを使用して内容を確認しています
まずは初期値のみのデータベースです
次にinsertを押したときのデータベースです
No4に高橋が追加してあるのがわかります
次にUpdeteを押したときのデータベースです
Noが1の“山田”の“Age”が50にアップデートされているのがわかります
最後にDeleteを押したときのデータベースです
Noが2の“田中”がデータベース上から消えているのがわかります
スポンサードリンク
【データベース SQLiteの最新記事】