|
|
이번에는 데이터 삭제 및 갱신하는 방법에 대하여 알아본다.
기존에 테스트하던 앱을 제거 후 새로운코드로 재설치 하였다.
DB_Test.java
package pe.berabue.dbtest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class DB_Test extends Activity {
private DBManager mDBManager;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.btn_insert).setOnClickListener(mClickListener);
findViewById(R.id.btn_delete).setOnClickListener(mClickListener);
findViewById(R.id.btn_update).setOnClickListener(mClickListener);
findViewById(R.id.btn_select).setOnClickListener(mClickListener);
mDBManager = new DBManager(this);
mDBManager.getReadableDatabase();
// mDBManager.getWritableDatabase();
mDBManager.close();
}
Button.OnClickListener mClickListener = new View.OnClickListener() {
public void onClick(View v) {
switch(v.getId()) {
case R.id.btn_insert: mDBManager.insert(mDBManager); break;
case R.id.btn_delete: mDBManager.delete(mDBManager); break;
case R.id.btn_update: mDBManager.update(mDBManager); break;
case R.id.btn_select: mDBManager.select(mDBManager); break;
}
}
};
}
액티비티에 4개의 버튼을 구현해 놓고 각기 다른 기능을 넣어두었다.4번째 버튼인 select버튼은 미구현.
DBManager.java
package pe.berabue.dbtest;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DBManager extends SQLiteOpenHelper {
public static final String DB_NAME = "dbtest.db";
public static final int DB_VERSION = 1;
private SQLiteDatabase mDB;
private String str;
private int temp;
public DBManager(Context context) {
super(context, DB_NAME, null, DB_VERSION);
str = "str_";
temp = 0;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE Android( _id INTEGER PRIMARY KEY AUTOINCREMENT," + "name TEXT, price INTEGER);");
db.execSQL("INSERT INTO Android VALUES (null, 'Cupcake' , 500 );");
db.execSQL("INSERT INTO Android VALUES (null, 'Donut' , 1000 );");
db.execSQL("INSERT INTO Android VALUES (null, 'Eclair' , 1500 );");
db.execSQL("INSERT INTO Android VALUES (null, 'Froyo' , 10000 );");
db.execSQL("INSERT INTO Android VALUES (null, 'Ginger bread' , 100000 );");
db.execSQL("INSERT INTO Android VALUES (null, 'Honeycomb' , 999999 );");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("INSERT INTO Android VALUES (null, 'Icecream Sandwich' , 1 );");
db.execSQL("INSERT INTO Android VALUES (null, 'Jellybean' , 2 );");
}
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
mDB = db;
}
public void insert(DBManager mDBManager) {
mDBManager.getWritableDatabase();
mDB.execSQL("INSERT INTO Android VALUES (null, '"+ str +"', "+ temp +" );");
mDBManager.close();
str += temp;
temp++;
Log.v(null,"Insert DB : "+temp);
}
public void delete(DBManager mDBManager) {
mDBManager.getWritableDatabase();
mDB.execSQL("DELETE FROM Android WHERE price = "+ (temp-1) +";");
mDBManager.close();
temp--;
Log.v(null,"Delete DB : "+temp);
}
public void update(DBManager mDBManager) {
mDBManager.getWritableDatabase();
mDB.execSQL("UPDATE Android SET price = "+ (temp+10) +" WHERE price = "+ (temp-1) +";");
mDBManager.close();
Log.v(null,"Update DB : "+temp);
}
public void select(DBManager mDBManager) {
}
}
open();DB를 열때 mDB에 객체를 저장시켜 놓는다.
insert();
DB를 읽기/쓰기 용으로 열고 name과 price를 입력시켜 테이블에 추가한다.
delete();
DB를 읽기/쓰기 용으로 열고 Android 테이블에 price가 temp-1인 데이터를 찾아 삭제시킨다.
update();
DB를 읽기/쓰기 용으로 열고 Android 테이블에 price가 temp-1인 데이터를 찾아 price를 temp+10값으로 변경시킨다.
main.xml
|
|
'Android > Databases' 카테고리의 다른 글
| 데이터베이스 Transaction 사용하기 (0) | 2011.07.26 |
|---|---|
| 데이터베이스 검색 (0) | 2011.07.13 |
| 데이터베이스 업그레이드하기 (0) | 2011.07.03 |
| 데이터베이스 사용하기 (1) | 2011.07.02 |