꿈꾸는 시스템 디자이너

간단한 SQLite 예제 본문

Development/Android

간단한 SQLite 예제

독행소년 2013. 7. 19. 16:27

SQLite를 이용한 DB생성, Table 생성/삭제, Data 추가/업데이트/삭제/읽기 예제이다.

아래의 블로그를 참조했음을 밝힌다.

http://hatti.tistory.com/9


DB를 한번이라도 다뤄본적이 있다면 이해할 수 있는 예제이므로 설명을 생략..

다만 DB를 생성하고 열기위한 openOrCreateDatabase() 메소드의 호출은 Activity상에서만 가능하다는 제약이 있다.


(추가) 이러한 제약을 해결하기 위해서는 SQLiteOpenHelper를 이용해야 하는데 그 방법은 별도(http://here4you.tistory.com/50)로 정리해두었다.



package com.example.databasetest;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

	// 상수 관련
	String dbName = "apList.db"; // name of Database;
	String tableName = "apListTable"; // name of Table;
	int dbMode = Context.MODE_PRIVATE;
	
	// Database 관련 객체들
	SQLiteDatabase db;
	
	// GUI 관련
	public Button btCreateDB, btCreateTable, btRemoveTable, btInsertData,
			btRemoveData;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		btCreateDB = (Button) findViewById(R.id.btCreatDB);
		btCreateTable = (Button) findViewById(R.id.btCreateTable);
		btRemoveTable = (Button) findViewById(R.id.btRemoveTable);
		btInsertData = (Button) findViewById(R.id.btInsertData);
		btRemoveData = (Button) findViewById(R.id.btRemoveData);
		db = openOrCreateDatabase(dbName,dbMode,null);
	}

	public void onClick(View v) {
		int id = v.getId();
		if (id == btCreateDB.getId()) {
			//createDatabase(dbName,dbMode);
		} else if (id == btCreateTable.getId()) {
			createTable();
		} else if (id == btRemoveTable.getId()) {
			removeTable();
		} else if (id == btInsertData.getId()) {
			insertData("hahahehe");
		} else if (id == btRemoveData.getId()) {
			selectAll();
		}
	}
	
	// Database 생성 및 열기
	public void createDatabase(String dbName, int dbMode){
		db = openOrCreateDatabase(dbName,dbMode,null);
	}
	
	// Table 생성
	public void createTable(){
		String sql = "create table " + tableName + "(id integer primary key autoincrement, "+"voca text not null)";
		db.execSQL(sql);
	}
	
	// Table 삭제
	public void removeTable(){
		String sql = "drop table " + tableName;
		db.execSQL(sql);
	}
	
	// Data 추가
	public void insertData(String voca){
		String sql = "insert into " + tableName + " values(NULL, '" + voca +"');";
		db.execSQL(sql);
	}
	
	// Data 업데이트
	public void updateData(int index, String voca){
		String sql = "update " + tableName + " set voca = '" + voca +"' where id = "+index +";";
		db.execSQL(sql);
	}
	
	// Data 삭제
	public void removeData(int index){
		String sql = "delete from " + tableName + " where id = "+index+";";
		db.execSQL(sql);
	}
	
	// Data 읽기(꺼내오기)
	public void selectData(int index){
		String sql = "select * from " +tableName+ " where id = "+index+";";
		Cursor result = db.rawQuery(sql, null);
		
		// result(Cursor 객체)가 비어 있으면 false 리턴
		if(result.moveToFirst()){
			int id = result.getInt(0);
			String voca = result.getString(1);
			Toast.makeText(this, "index= "+id+" voca="+voca, 0).show();
		}
		result.close();
	}
	
	
	// 모든 Data 읽기
	public void selectAll(){
		String sql = "select * from " + tableName + ";";
		Cursor results = db.rawQuery(sql, null);
		
		results.moveToFirst();
		
		while(!results.isAfterLast()){
			int id = results.getInt(0);
			String voca = results.getString(1);
			Toast.makeText(this, "index= "+id+" voca="+voca, 0).show();
			results.moveToNext();
		}
		results.close();
	}
	
	
}


Comments