DBAdapter db = new DBAdapter(this, DBAdapter.SQL_CREATE_MEMBER, "member");
ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
SimpleAdapter sap = new SimpleAdapter(this, list, android.R.layout.simple_list_item_2, new String[] {"name", "addr", "year"}, new int[] {android.R.id.text1, android.R.id.text2, android.R.id.text2});
// DBMS를 도와주는 util클래스로 가정
public class DBAdapter {
private DatabaseHelper mHelper;
private SQLiteDatabase mDb;
private static final String DATABASE_NAME = "memberdb";
private static final int DATABASE_VERSION = 1;
private static String SQL_TABLE_CREATE;
private static String TABLE_NAME;
// 여러 테이블을 이용할 경우 아래처럼 테이블을 생성하기 위한 sql만 담아서 범용적으로
// DBAdapter 클래스를 사용하는게 좋다.
public static final String SQL_CREATE_MEMBER =
"create table member (no integer primary key autoincrement,"
+ " name text not null,"
+ " addr text not null,"
+ " year text not null"
+ ")";
private final Context mCxt;
// DB를 open, update, drop 시키는 역할의 클래스
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public DatabaseHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(SQL_TABLE_CREATE);
}
@Override
public void onOpen(SQLiteDatabase db) {
// TODO Auto-generated method stub
super.onOpen(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
// DBAdapter를 이용하고자 하는 곳에서 생성자에 table 생성 sql과 table명만 주고 이용해라.
public DBAdapter(Context cxt, String sql, String tableName) {
this.mCxt = cxt;
SQL_TABLE_CREATE = sql;
TABLE_NAME = tableName;
}
public DBAdapter open() throws SQLException {
// 외부에서 db를 사용하겠다고 요청이 들어오면 Helper를 이용해서 db를 open하고
// 자신의 클래스를 리턴
mHelper = new DatabaseHelper(mCxt);
mDb = mHelper.getWritableDatabase();
return this;
}
public void close() {
mHelper.close();
}
public long insertTable(ContentValues values) {
return mDb.insert(TABLE_NAME, null, values);
}
public boolean deleteTable(String pkColumn, long pkData) {
return mDb.delete(TABLE_NAME, pkColumn + "=" + pkData, null) > 0;
}
public Cursor selectTable(String[] columns, String selection,
String[] selectionArgs, String groupBy,
String having, String orderBy) {
return mDb.query(TABLE_NAME, columns, selection, selectionArgs, groupBy, having, orderBy);
}
public boolean updateTable(ContentValues values, String pkColumn, long pkData) {
return mDb.update(TABLE_NAME, values, pkColumn + "=" + pkData, null) > 0;
}
}