2012-05-20 2 views
1

Eclipse + ADT를 사용하여 sqlite db를 읽고 쓰는 앱을 만들었습니다. Android 터미널 에뮬레이터에서 제대로 작동하지만 전화 자체에서 실행하면 db의 Spinners가 채워지지 않습니다. 내부 메모리에 db를 찾지 못했습니다. db가 전화 상에 있다면 dbb를 사용할 수 있도록 앱에 루트 권한을 부여해야합니다. 어떻게하면됩니까? 제 전화는 모토로라의 불량배입니다. 진보 된 덕분에 좋은 하루 되셨습니다.안드로이드 - 내부 메모리 전화에서 sqlite 데이터베이스에 액세스하는 방법?

편집 :이 테이블을 만들 수있는 내 수업과 방법을 추가에서 onCreate와의 onUpdate :

public class passwordSQLiteHelper extends SQLiteOpenHelper{ 

String SqlCreate = "CREATE TABLE password(id INTEGER, name TEXT, password TEXT)"; 

public passwordSQLiteHelper(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(SqlCreate); 

} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 
    db.execSQL("DROP TABLE IF EXISTS password"); 
    db.execSQL(SqlCreate); 

} 

} 

그리고 활동이 시작되면 내가 메인 클래스에서 호출 해요 :

passwordSQLiteHelper passUserDb = new passwordSQLiteHelper(this, "/data/data/com.project.otto/databases/password", null, 1); 

터미널에서 위대한 작품,하지만 전화를 어디에서 db를 찾을 수없는 것 같아요, 나는 adb로 확인하고 거기에있어, 제발 도와주세요, 고마워!

+0

응용 프로그램 저장소 외부에 데이터베이스를 저장하려고합니까? –

+2

앱의 DB입니까? 그렇다면 당신은 뿌리가 필요 없습니다. –

+0

포스트 코드와 logcat에서 볼 수있는 오류. 펄서 (Pulsar)가 말했듯이, 자신의 앱은 내부 메모리에서 자체 DB로 작업하기 위해 특별한 권한이 필요하지 않습니다. – Squonk

답변

0

먼저, 생성자에서 데이터베이스의 전체 경로를 지정하지 않았습니다. 파일 이름은 괜찮을 것입니다. 안드로이드는 자동으로 애플리케이션의 개인 데이터 영역에서 파일 이름을 생성합니다.

public PasswordDatabase(Context context { 
    super(context, "password.db", null, 1); 
} 

그리고를 통해 그것을 만들 : 당신이 SQLiteOpenHelper에 대한 문서를 보면

PasswordDatabase db = new PasswordDatabase(this); 

, 그것은 하나 getReadableDatabase() 또는 getWriteableDatabase()가 호출 될 때까지 데이터베이스가 생성되지 않는다는 것을 말한다. 그래서, 나는 그 중 하나를 호출하고 데이터베이스가 생성되었는지 확인하려고합니다.

+0

처음에는 풀 패스를 지정하지 않았지만 확실하게하기 위해 시도했지만, 에뮬레이터를 사용할 때 작동하는 이유는 무엇이며 전화를 실행할 때 DB에서 아무 것도 표시하지 않는 이유는 무엇입니까? – saman0suke

+0

나는 당신의 코드를 이미 시험해 보았지만 그 결과는 같지만 터미널 에뮬레이터에서 여전히 작동하고있다. 무슨 일이 일어나는 지 모르겠다. – saman0suke

+0

에뮬레이터에있는 데이터가있는 동안 내 전화의 테이블에 데이터가 채워지지 않았지만 항상 내 실수였습니다. 에뮬레이터에서 생성 된 데이터베이스가 Eclipse에서도 Eclipse로 전송되었다고 생각했습니다. 감사합니다. 나를 도우려는 데 많은 도움을주었습니다. Eclipse와 Android 프로그래밍에 익숙합니다. 좋은 하루 되세요! – saman0suke

관련 문제