안드로이드 개발 질문/답변
(글 수 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로 확인해보니 데이터베이스 파일은 생성이 되는데
데이터가 삽입이 안되는것 같은데 어디가 잘못 된걸까요?



