public class DataBaseAdapter {
// table에 들어갈 컬럼값
public static final String KEY_ROWID = "id";
public static final String KEY_NAME = "name";
public static final String KEY_SEX = "sex";
public static final String KEY_YEAR = "year";
public static final String KEY_HEIGHT = "height";
public static final String KEY_WEIHGT = "weight";
public static final String KEY_LOSS_WEIGHT = "loss_weight";
public static final String KEY_AVG_WEIGHT = "avg_weight";
public static final String KEY_BM = "bm";
public static final String KEY_BMI = "bmi";
// DataBaseHelper와 SQLDatabase객체 정의(SQLiteDatabase : 추가, 삭제, 쿼리, 수정과 관련)
private DataBaseHelper mDBHelper;
private SQLiteDatabase mDB;
// Create Table 정의
private static final String DB_CREATE = "create table userinfo (id integer primary key autoincrement,"
+ "name text not null, sex text, year Integer, height Integer, weight Integer, loss_weight Integer, avg_weight Integer, bm Integer, bmi Integer);";
// SQLiteOpenHelper Values
private static final String DATABASE_NAME = "checkmybody.db";
private static final String DATABASE_TABLE = "userinfo";
private static final int DATABASE_VERSION = 1;
private final Context mContext;
// SQLiteOpenHelper 정의(SQLiteOpenHelper : 생성, 열기, 업데이트와 관련)
private class DataBaseHelper extends SQLiteOpenHelper {
public DataBaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// table 생성
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DB_CREATE);
}
// db업데이트
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
onCreate(db);
}
}
public DataBaseAdapter(Context context) {
mContext = context;
}
// DB열기
public DataBaseAdapter open() {
mDBHelper = new DataBaseHelper(mContext);
try {
mDB = mDBHelper.getWritableDatabase();
} catch (SQLiteException ex) {
mDB = mDBHelper.getReadableDatabase();
}
return this;
}
// DB 닫기
public void close() {
mDBHelper.close();
}
// 모든 필드값 삭제
public void initialTable() {
mDB.execSQL("DELETE FROM " + DATABASE_TABLE+";");
}
// 필드값 insert
public long insertUserInfo(String name, String sex, float year,
float height, float weight, float lossWeihgt, float avgWeight,
float BM, float BMI) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_NAME, name);
initialValues.put(KEY_SEX, sex);
initialValues.put(KEY_YEAR, year);
initialValues.put(KEY_HEIGHT, height);
initialValues.put(KEY_WEIHGT, weight);
initialValues.put(KEY_LOSS_WEIGHT, lossWeihgt);
initialValues.put(KEY_AVG_WEIGHT, avgWeight);
initialValues.put(KEY_BM, BM);
initialValues.put(KEY_BMI, BMI);
return mDB.insert(DATABASE_TABLE, null, initialValues);
}
// 지우고싶은 로우값 지우기
public boolean deleteUserInfo(long rowID) {
return mDB.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowID, null) > 0;
}
// 모든 필드값 받아오기
public Cursor fetchAllUserInfo() {
return mDB.rawQuery("SELECTE * FROM "+ DATABASE_TABLE, null);
}
// 원하는 로우값 받아오기
public Cursor fetchUserInfo(long rowID) {
Cursor cursor = mDB.query(DATABASE_TABLE, new String[] { KEY_ROWID,
KEY_SEX, KEY_YEAR, KEY_HEIGHT, KEY_WEIHGT, KEY_LOSS_WEIGHT, KEY_AVG_WEIGHT, KEY_BM, KEY_BMI },
KEY_ROWID + "=" + rowID, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
return cursor;
}
// 필드값 Update
public boolean updateUserInfo(long rowID, String name, String sex,
float year, float height, float weight, float lossWeihgt, float avgWeight, float BM, float BMI) {
ContentValues args = new ContentValues();
args.put(KEY_NAME, name);
args.put(KEY_SEX, sex);
args.put(KEY_YEAR, year);
args.put(KEY_HEIGHT, height);
args.put(KEY_WEIHGT, weight);
args.put(KEY_LOSS_WEIGHT, lossWeihgt);
args.put(KEY_AVG_WEIGHT, avgWeight);
args.put(KEY_BM, BM);
args.put(KEY_BMI, BMI);
return mDB.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowID, null) > 0;
}
}
현재 DataBaseAdapter class를 구현하여 db를 사용하고있습니다.
그런데 궁금한게, 처음 table을 만들기 위해 open()메소드를 사용하고, 그리고 insertUserInfo(..)메소드를 통해서 값을 넣어주는데, 마지막에 close()를 통해서 DB를 닫아주는데, 다음에 다른 Activity에서 사용할 때 open()을 또 해주어야되는건가요??