안드로이드 개발 질문/답변
(글 수 45,052)
public class accountsDB { private static final String DATABASE_NAME = "accounts.db"; private static final String DATABASE_TABLE = "accounts"; private static final int DATABASE_VERSION = 1; public static final String KEY_ID = "_id"; public static final String KEY_USERNAME = "username"; public static final String KEY_PASSWORD = "password"; private static final String DATABASE_CREATE = "create table data (_id integer primary key autoincrement,"+ "username text not null, password text not null);"; private static final String TAG = "AccountsDb"; private static DbHelper mDbHelper; private SQLiteDatabase mDb; private final Context mCtx; private static class DbHelper extends SQLiteOpenHelper { public DbHelper (Context context) { //데이터베이스에 대한 정보를 저장하는 역할 super(context, DATABASE_NAME, null, DATABASE_VERSION); }
@Override public void onCreate(SQLiteDatabase db) { //실행 직후 수행되어야 할 것 db.execSQL(DATABASE_CREATE); // 테이블 생성 }
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(TAG, "Upgrading db from version" + oldVersion + " to" + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS accounts"); // 테이블 삭제 후 onCreate(db); // 테이블 생성 } }
public accountsDB(Context ctx){ this.mCtx = ctx; }
public accountsDB open() throws SQLException{ mDbHelper = new DbHelper(mCtx); mDb = mDbHelper.getWritableDatabase(); //mDb = mDbHelper.getReadableDatabase(); return this; } public void close(){ mDbHelper.close(); } public long createAccount(String name, String pass){ // 레코드 생성 ContentValues initialValues = new ContentValues(); initialValues.put(KEY_USERNAME, name); initialValues.put(KEY_PASSWORD, pass); return mDb.insert(DATABASE_TABLE, null, initialValues); } public boolean deleteAccount(long rowID){ // 레코드 삭제 return mDb.delete(DATABASE_TABLE, KEY_ID + "=" + rowID, null) > 0; } public Cursor fetchAllAccount(){ // 모든 레코드 반환 return mDb.query(DATABASE_TABLE, new String[]{KEY_ID, KEY_USERNAME, KEY_PASSWORD}, null, null, null, null, null); } public Cursor fetchAccount(long rowID) throws SQLException{ // 특정 레코드 반환 Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[]{KEY_ID, KEY_USERNAME, KEY_PASSWORD}, KEY_ID + "=" + rowID, null, null, null, null, null); if(mCursor != null) mCursor.moveToFirst(); return mCursor; } public boolean updateAccount(long rowID, String name, String pass){ // 레코드 수정 ContentValues args = new ContentValues(); args.put(KEY_USERNAME, name); args.put(KEY_PASSWORD, pass); return mDb.update(DATABASE_TABLE, args, KEY_ID + "=" + rowID, null) > 0; } }db 어댑터 이구요
밑에는 db어댑터 사용 소스코드에요
public void click_ok(View target) { final EditText input_id = (EditText)findViewById(R.id.id_input); final EditText input_pw = (EditText)findViewById(R.id.password_input); username = (String)input_id.getText().toString(); password = (String)input_pw.getText().toString(); mDbHelper = new accountsDB(this); mDbHelper.open(); mDbHelper.createAccount(username, password); mDbHelper.close(); input_id.setText(""); input_pw.setText(""); finish(); }
ddms로 확인해보니 데이터베이스 파일은 생성이 되는데
데이터가 삽입이 안되는것 같은데 어디가 잘못 된걸까요?