이 주제는 sqlite에서 새 테이블을 만드는 데 약간의 문제가 있음을 암시합니다. 이제까지 내가 내 코드로 할 수있는 일은 db에 새 테이블을 만들 수 없다는 것입니다. 만약 내가 DB를 보면 그냥 안드로이드 _ 메타 데이터 tb와 아무것도 없다. 새로 작성하는 코드는 다음과 같습니다테이블을 만들 수 없습니다. SQLite/Android
...
this.createTable(R.string.nametable, "_id INT PRIMARY KEY, " + "parentID INT, " + "name TEXT");
...
public void createTable(int id, String sql) {
String table = this.getStringById(id);
String _sql = "CREATE TABLE " + table + "(" + sql + ")";
Log.d("Controller.createTable", _sql);
this.mCurrentConnection.rawQuery(_sql, null);
try {
Cursor c = this.Select(id, "*", null);
c.close();
Log.d("Controller.createTable", "create finished");
} catch (Exception e) {
Log.d("Controller.createTable", "can't create table: " + table);
}
}
내가 열거 나 내가 다 해봤
if(this.mCurrentConnection == null || !this.mCurrentConnection.isOpen()) {
this.mCurrentConnection = this.mContext.openOrCreateDatabase(this.mDB, Context.MODE_PRIVATE , null);
}
내 응용 프로그램의 생성자에서 DB를 만들 : 응용 프로그램을 다시 설치, DB/TB의 변화 이름을 , ";" 또는 명령의 마지막에 새로운 클린 VM으로 시도해보십시오. 내 prob 문제를 해결하는 유용한 기존 게시물/답변을 찾지 못했습니다. 내가 phpMyAdmin을에 _sql 문
CREATE TABLE name_table(_id INT PRIMARY KEY, parentID INT, name TEXT)
을 실행할 경우 는 (MySQL의) 모든 작동합니다.
도와 주시면 기쁘게 생각합니다.
관련 알렉스
편집 : (아래 코멘트에 대한 답)
@VikramBodicherla : 그게 확률값입니다. create 문 자체는 예외를 발생시키지 않습니다. 34 : 14.834 : E/데이터베이스 (305) : 오류 삽입 parentid = -1 이름 = blabla 04-30 07 : 34 : 선택 (체크) 문은
04-30 07 던져 않습니다 14.834 : E/데이터베이스 (305) : android.database.sqlite.SQLiteException :
해당 테이블 없음 : name_table : 컴파일 중 : INSERT INTO name_table (parentid, name) VALUES (?,?); 04030 07 : 34 : 14.834 : E/데이터베이스 (305) : android.database.sqlite.SQLiteProgram.native_compile (네이티브 메소드) 04-30 07 : 34 : 14.834 : E/데이터베이스 (305) : at android.database.sqlite.SQLiteProgram.compile (SQLiteProgram.java:110) 04-30 07 : 34 : 14.834 : E/데이터베이스 (305) : android.database.sqlite.SQLiteProgram. (SQLiteProgram.java:59) 04-30 07 : 34 : 14.834 : E/데이터베이스 (305) : android.database.sqlite.SQLiteStatement. (SQLiteStatement.java:41) 04-30 07 : 34 : 14.834 : E/데이터베이스 (305) : android.database.sqlite.SQLiteDatabase.compileStatement (SQLiteDatabase.java:1027) 04-30 07 : 34 : 14.834 : E/데이터베이스 (305) : android.database.sqlite.SQLi (SQLiteDatabase.java : 1286) 04-30 07 : 34 : 14.834 : E/데이터베이스 (305) : : 34 : 14.834 : E/데이터베이스 (305) : unicorn.Heurazio.Controller.addName (Controller.java:156) 04-30 07 : 34 : 14.834 : E/데이터베이스 (305) : 에서 unicorn.Heurazio (Controller.java:135) 04-30 07 : 34 : 14.834 : 전자/데이터베이스 (305) : 에서 유니콘. 34 : 14.834 : E/데이터베이스 (305) : android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 04-30 07 : 34 : 14.834 : E/데이터베이스 (305) : android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2459) 04-30 07 : 34 : 14.834 : 전자/데이터베이스 (305) : android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2512) 04-30 07 : 34 : 14.834 : 전자/데이터베이스 (305) : android.app.ActivityThread.access $ 2200 (ActivityThread.java:119) 04-30 07:34 : 14.834 : E/데이터베이스 (305) : android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1863) 04-30 07 : 34 : 14.834 : E/데이터베이스 (305) : android.os. Handler.dispatchMessage (Handler.java:99) 04-30 07 : 34 : 14.834 : 전자/데이터베이스 (305) : android.os.Looper.loop (Looper.java:123) 04-30 07:34 : 14 : 343 : E/데이터베이스 (305) : android.app.ActivityThread.main (ActivityThread.java:4363) 04-30 07 : 34 : 14.834 : E/데이터베이스 (305) : java.lang.reflect .Method.invokeNative (네이티브 남 ethod) 04-30 07 : 34 : 14.834 : E/데이터베이스 (305) : 에서 java.lang.reflect.Method.invoke (Method.java:521) 04-30 07 : 34 : 14.834 : E/데이터베이스 (305) : com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.runZygoteInit.java : 860) 04-30 07 : 34 : 14.834 : E/데이터베이스 (305) : com.android.internal.os .ZygoteInit.main (ZygoteInit.java:618) 04-30 07 : 34 : 14.834 : E/데이터베이스 (305) : dalvik.system.NativeStart.main에서 (기본 방법)
다음을 사용해 보셨습니까? http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html – xandy
logcat stacktrace도 게시 할 수 있습니까? 나는 당신이 예외 상황에 처해 있다고 가정한다. –
네 역시 시도했습니다. 그러나 나는이 접근법을 건너 뛰기 위해 내가 필요로하지 않았다고 생각한다. 내가 잘못 afum 경우 SQLiteOpenHelper는 업 그레 이드입니다. – Alex