안드로이드를 사용하다보면 DB가 필요해지는 날이 온다. 하지만 안드로이드는 직접적으로 DB접근이 안된다.
그래서 임시로 저장소가 필요한데, 그것이 SQLLITE라고 할수있다.
DBHELPER
SQLLITE를 쓰기 위해서는 DBHELPER를 만들고 호출해야 한다.
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } // 테이블 public static final String TABLE_NAME = "테이블명"; public static final String COLUMN_ID = "id"; public static final String COLUMN_title = "title"; public static final String COLUMN_body = "body"; public static final String COLUMN_DATE = "dtm"; public static final String COLUMN_url = "url"; //테이블이 존재하지 않는다면 만드는것으로 이미 만들어져있다면 넘어간다. private static final String DATABASE_CREATE_TEAM = "CREATE TABLE if not exists " + TABLE_NAME + "(" + COLUMN_ID + " integer primary key autoincrement, " + COLUMN_title + " text, " + COLUMN_body + " text, " + COLUMN_url + " text, " + COLUMN_DATE + " date);" @Override public void onCreate(SQLiteDatabase db) { // 만약 db가 계속 새로 만들어지길 원한다면 여기서 DROP를 추가하자. // db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); db.execSQL(DATABASE_CREATE_TEAM); } //db 업그레이드 메소드이다. 별로 쓸일은 없다. @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String sql = "DROP TABLE if exists mytable"; db.execSQL(sql); onCreate(db); }
DBHELPER를 작성 했다면 호출하는 부분을 살펴보자.
Activity에서 호출하는 부분
DBHelper helper; SQLiteDatabase db; helper = new DBHelper(MainActivity.this, "테이블명", null, 1); //데이터베이스의 읽기권한을 허용한다. db = helper.getWritableDatabase(); helper.onCreate(db);
SELECT
//내가 넣었던 sql문 쓸사람은 알아서 작성하자. String sql = " SELECT * FROM 테이블명 ORDER BY ROWID DESC LIMIT 5;"; //null값은 바인딩으로 //selectionArgs는 Where과 같이 인자가 필요한 필터의 메개변수 값을 전달 하는 역할을 한다. //예를 들어 // rawQuery("Select * from " + StudentTable.TABLE_NAME + //" where " + StudentTable.STATE + "= ? OR " + StudentTable.STATE + "=?", //new String[]{"IL","AR"}); //테이블을 읽을 커서다. 커서가 db를 한줄 한줄씩 읽어줄꺼다. Cursor c = db.rawQuery(sql, null); while (c.moveToNext()) { }
INSERT
insert문은 ContentValues를 만들어서 column이름과 data를 넣고 db.insert()함수를
호출한다.ContentValues values = new ContentValues(); values.put("컬럼명","원하는데이터"); //중간에 Null값은 테이블에 널값이 들어갈경우, 대체되는 문자값을 말한다. db.insert("테이블",null,values);
사실 db.xxx는 인서트만 하기 편리하고 나머진 커리를 작성하고 excute하는게 편하다.
excute
String sql3 = "DELETE FROM mytable WHERE txt='chickin';"; db.execSQL(sql3);
뭐가 편할지는 알아서 생각하자 ><