앞서 데이터베이스의 간단한 사용방법과 데이터의 추가, 업그레이드 방법을 알아보았다.
이번에는 데이터 삭제 및 갱신하는 방법에 대하여 알아본다.
기존에 테스트하던 앱을 제거 후 새로운코드로 재설치 하였다.

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

+ Recent posts