Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- ListTile
- FutureBuilder
- Load Image
- 반석천
- WillPopScope
- Column Widget
- Networking
- Scaffold
- Image.network
- Row Widget
- CrossAxisAlignment
- Flutter 앱 배포
- Flutter 예제
- Row
- Flutter Tutorial
- MainAxisAlignment
- flutter
- node.js
- Flutter Example
- Flutter 강좌
- sqlite
- AppBar
- HTTP
- ListView.builder
- navigator
- Snackbar
- Cached Image
- InkWell
- Hello World
- listview
Archives
- Today
- Total
꿈꾸는 시스템 디자이너
SQLiteOpenHelper 사용법 본문
앞서 설명한 SQLite 예제(http://here4you.tistory.com/49)를 이용하면 쉽게 DB관련 작업을 수행할 수 있다. 다만 해당 예제에서는 DB관련한 코드들이 Activity 코드에 포함되어야 한다는 단점이 있다. 별도의 DB관리 코드를 만들어서 재사용하고 싶을 때에는 SQLiteOpenHelper를 이용하면된다.
<DBManager.java>
import java.util.ArrayList; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.widget.Toast; //DB를 총괄관리 public class DBManager { // DB관련 상수 선언 private static final String dbName = "APinfo.db"; private static final String tableName = "APinfo"; public static final int dbVersion = 1; // DB관련 객체 선언 private OpenHelper opener; // DB opener private SQLiteDatabase db; // DB controller // 부가적인 객체들 private Context context; // 생성자 public DBManager(Context context) { this.context = context; this.opener = new OpenHelper(context, dbName, null, dbVersion); db = opener.getWritableDatabase(); } // Opener of DB and Table private class OpenHelper extends SQLiteOpenHelper { public OpenHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, null, version); // TODO Auto-generated constructor stub } // 생성된 DB가 없을 경우에 한번만 호출됨 @Override public void onCreate(SQLiteDatabase arg0) { // String dropSql = "drop table if exists " + tableName; // db.execSQL(dropSql); String createSql = "create table " + tableName + " (" + "id integer primary key autoincrement, " + "SSID text, " + "capabilities integer, " + "passwd text)"; arg0.execSQL(createSql); Toast.makeText(context, "DB is opened", 0).show(); } @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { // TODO Auto-generated method stub } } // 데이터 추가 public void insertData(APinfo info) { String sql = "insert into " + tableName + " values(NULL, '" + info.getSSID() + "', " + info.getCapabilities() + ", '" + info.getPasswd() + "');"; db.execSQL(sql); } // 데이터 갱신 public void updateData(APinfo info, int index) { String sql = "update " + tableName + " set SSID = '" + info.getSSID() + "', capabilities = " + info.getCapabilities() + ", passwd = '" + info.getPasswd() + "' where id = " + index + ";"; db.execSQL(sql); } // 데이터 삭제 public void removeData(int index) { String sql = "delete from " + tableName + " where id = " + index + ";"; db.execSQL(sql); } // 데이터 검색 public APinfo selectData(int index) { String sql = "select * from " + tableName + " where id = " + index + ";"; Cursor result = db.rawQuery(sql, null); // result(Cursor 객체)가 비어 있으면 false 리턴 if (result.moveToFirst()) { APinfo info = new APinfo(result.getInt(0), result.getString(1), result.getInt(2), result.getString(3)); result.close(); return info; } result.close(); return null; } // 데이터 전체 검색 public ArrayList<apinfo> selectAll() { String sql = "select * from " + tableName + ";"; Cursor results = db.rawQuery(sql, null); results.moveToFirst(); ArrayList<apinfo> infos = new ArrayList<apinfo>(); while (!results.isAfterLast()) { APinfo info = new APinfo(results.getInt(0), results.getString(1), results.getInt(2), results.getString(3)); infos.add(info); results.moveToNext(); } results.close(); return infos; } }
<Activity 파일>
DBManager manager = new DBManager(this); manager.updateData(newInfo, index); manager.insertData(newInfo);
엑티비티에서 DBManager를 통해 SQLite를 이용하는 위의 코드내용과 같다.
DBManager 객체를 생성하는 순간 DB가 오픈된다. 만약 해당 DB나 Table이 존재하지 않는다면 OpenHelper()와 onCreate() 메소드들에 의해 자동 생성된다.
DB가 오픈되면 생성한 DBManager 인스턴스를 이용하여 데이터의 추가/갱신/삭제/검색등이 가능해 진다.
'Development > Android' 카테고리의 다른 글
View 롤오버 처리(텍스트 색상, 배경 색상) (0) | 2013.08.07 |
---|---|
프레그먼트(Fragment)간 통신(Communication) 예제 (0) | 2013.08.02 |
간단한 SQLite 예제 (0) | 2013.07.19 |
ProgressDialog와 AlertDialog 사용법 (0) | 2013.07.15 |
개발폰에 구글 플레이 스토어(Google Play Store) 수동 설치 및 구글맵 설치 (0) | 2013.06.14 |
Comments