Android (api 15)를 사용하여 android : minSdkVersion이 "8"인 Android 응용 프로그램을 만들었습니다. 이 응용 프로그램을 실행하려면 4.1 에뮬레이터를 사용하고 있습니다. 에뮬레이터에서 정상적으로 작동하며 api 4.1이 설치된 장치에 성공적으로 설치되지만 ... datak
클래스 (데이터베이스 연결 파일)를 사용하는 활동이 시작되면 응용 프로그램이 작동을 멈 춥니 다.응용 프로그램 데이터베이스 관련 활동이 에뮬레이터에서 작동하지만 장치에서 작동하지 않습니다.
앱은 4 가지 질문 중 하나와 가능한 답변이있는 퀴즈입니다. 데이터베이스 이름은 "KBC"이며 게임을 진행할 때 검색되지만 장치에서는 데이터베이스가 검색되지 않습니다. 나는 장치가 내 테이블 파일과 에뮬레이터에서 밀어 넣은 모든 질문이있는 데이터베이스 파일 "KBC"를 찾을 수 없다고 생각합니다 ...
가상 장치 파일 탐색기에서 "data/data/android.kt.banoge.karodpati/databases "
내 datak
클래스의 코드는 다음과 같습니다. 이미 많은 질문을 살펴 보았다 그러나 그들은하지 도움이됩니다 :
- http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
- Android application working in emulator but not in device
아무도 나에게이 문제에 대한 이유 또는 솔루션을 제공시겠습니까?
public class Datak
{
public static final String QUE = "question";
public static final String A = "optionA";
public static final String B = "optionB";
public static final String C = "optionC";
public static final String D = "optionD";
public static final String ANS = "answer";
public static final String LEV = "level";
private static final String TAG = "DBAdapter";
public static final String played = "played";
public static final String five = "five";
public static final String one = "one";
public static final String second = "second";
public static final String first = "first";
private static final String DATABASE_NAME = "KBC";
private static final String DATABASE_TABLE = "main";
private static final String DATABASE_TABLE2 = "main2";
private static final String DATABASE_TABLE3 = "main3";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE =
"create table "+ DATABASE_TABLE +"("
+ QUE + " text not null,"
+ A + " text not null, "
+ B + " text not null,"
+ C + " text not null,"
+ D + " text not null,"
+ ANS + " text not null,"
+ LEV + " text not null); ";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public Datak(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(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 database from version " + oldVersion
+ " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS titles");
onCreate(db);
}
}
public Datak open() throws SQLException
{
db = DBHelper.getWritableDatabase();
return this;
}
public void close()
{
DBHelper.close();
}
public Cursor getValue()
{
return db.query(DATABASE_TABLE, new String[] {
QUE,
A,
B,
C,
D,
ANS,LEV
},
null,
null,
null,
null,
null,null
);
}
public Cursor getValue2()
{
return db.query(DATABASE_TABLE2, new String[] {
QUE,
A,
B,
C,
D,
ANS,LEV
},
null,
null,
null,
null,
null,null
);
}
public Cursor getValue3()
{
return db.query(DATABASE_TABLE3, new String[] {
QUE,
A,
B,
C,
D,
ANS,LEV
},
null,
null,
null,
null,
null,null
);
}
public Cursor getState()
{
return db.query("states", new String[] {
played,
five,
one,
second,
first
},
null,null,null,null,null);
}
public void updateRow(int a)
{
final Cursor c1;
int pl;
ContentValues CV=new ContentValues();
c1=db.query("states", new String[] {
played,
five,
one,
second,
first
},
null,null,null,null,null);
c1.moveToPosition(0);
if(a==1)
{
pl=c1.getInt(0);
pl++;
CV.put(played, pl);
}
if(a==2)
{
pl=c1.getInt(1);
pl++;
CV.put(five, pl);
}
if(a==3)
{
pl=c1.getInt(2);
pl++;
CV.put(one, pl);
}
if(a==4)
{
pl=c1.getInt(3);
pl++;
CV.put(second, pl);
}
if(a==5)
{
pl=c1.getInt(4);
pl++;
CV.put(first, pl);
}
db.update("states", CV, null, null);
c1.close();
}
12-05 19 : 08 : 57.158 : E/AndroidRuntime (13,825) FATAL EXCEPTION : 메인 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13,825) 인 java.lang .IllegalStateException : 활동의 메서드를 실행할 수 없습니다. 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.view.View $ 1.onClick (View.java:3069) 12-05 19:08 : 57.158 : E/AndroidRuntime (13825) : android.view.View.performClick (View.java:3591) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.view.View $ PerformClick .run (View.java:14263) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.os.Han dler.handleCallback (Handler.java:605) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.os.Handler.dispatchMessage (Handler.java:92) 12-05 19:08 : 57.158 : E/AndroidRuntime (13825) : android.os.Looper.loop (Looper.java:137) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.app.ActivityThread.main ActivityThread.java:4507) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : java.lang.reflect.Method.invokeNative (기본 메소드) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : java.lang.reflect.Method.invoke (Method.java:511) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : com.android.internal.os.ZygoteInit $ MethodAndArgsCaller .run (ZygoteInit.java:790) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : com.android.internal.os.ZygoteInit.main (ZygoteInit.java:557) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : dalvik.system.NativeStart.main (기본 메소드) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : 원인 : java .lang.reflect.InvocationTargetException 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : java.lang.reflect.Method.invokeNative (기본 메소드) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : java.lang.reflect.Method.invoke (Method.java:511) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.view.View $ 1.onClick (보기. 자바 : 3064) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : ... 11 더 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : 원인 : android.database. sqlite.SQLiteException : 해당 테이블 : 상태 :, 컴파일하는 동안 : 선택 재생, 다섯, 1, 두 번째, 처음 FROM 상태 12-05 19 : 08 : 57.158 : E androidRuntime (13825) : android.database.sqlite.SQLiteCompiledSql. native_compile (네이티브 메서드) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.database.sqlite.SQLiteCompiledSql. (SQLiteCompiledSql.java:68) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.database.sqlite.SQLiteProgram.compileSql (SQLiteProgram.java:143) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.database.sqlite.SQLiteProgram.compileAndbindAllArgs SQLiteProgram.java : 361) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.database.sqlite.SQLiteProgram. (SQLiteProgram.java:127) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.database.sqlite.SQLiteProgram. (SQLitePr ogram.java:94) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.database.sqlite.SQLiteQuery. (SQLiteQuery.java:53) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.database.sqlite.SQLiteDirectCursorDriver.query (SQLiteDirectCursorDriver.java:47) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.database.sqlite.SQLiteDatabase.rawQueryWithFactory (SQLiteDatabase.java:1690) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.database.sqlite.SQLiteDatabase.queryWithFactory (SQLiteDatabase.java:1575) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.database.sqlite.SQLiteDatabase.query (SQLiteDatabase.java:1531) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : android.database.sqlite.SQLiteDatabase .query (SQLiteDatabase.java:1611) 12-05 19 : 08 : 57.15 8 : E/AndroidRuntime (13825) : com.kt.banoge.karodpati.Datak.updateRow (Datak.java:172) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : at com.kt. banoge.karodpati.MainActivity.change (MainActivity.java:66) 12-05 19 : 08 : 57.158 : E/AndroidRuntime (13825) : ... 14 개 }
내가이 솔루션의 응용 프로그램을 시도했다가 에뮬레이터 잘 작동하지만 여전히 장치에서 작동하지 ... 통해 UR 솔루션 db.execsql involkes onli 내가 데이터베이스를 업그레이드하는 경우 .. 데이터베이스를 열 수 없습니다! –
네, 한번보세요 : "main"테이블을 생성하는 동안 "title"테이블을 삭제하려고합니다 : 부작용은 메인 테이블의 구조가 최신이 아닌 것일 수 있습니다. –
"응용 프로그램이 작동을 멈췄습니다"라고 쓰면 logcat을 통해 예외가 발생합니까? 장치에서 응용 프로그램을 디버깅하면 어떻게됩니까? –