안드로이드 개발 질문/답변
(글 수 45,052)
에러로그캣데이터베이스 오류나는 곳입니다.
01-06 18:25:17.412: I/getDatabasePath000(2081): /data/data/jp.co.airex.andromagic.apl/databases/andromagic_remocon.db 01-06 18:25:17.420: E/Database(2081): CREATE TABLE android_metadata failed 01-06 18:25:17.420: E/Database(2081): Failed to setLocale() when constructing, closing the database 01-06 18:25:17.420: E/Database(2081): android.database.sqlite.SQLiteDatabaseCorruptException: malformed database schema (REMOCON) - near "NO": syntax error 01-06 18:25:17.420: E/Database(2081): at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method) 01-06 18:25:17.420: E/Database(2081): at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1806) 01-06 18:25:17.420: E/Database(2081): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1756) 01-06 18:25:17.420: E/Database(2081): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:751) 01-06 18:25:17.420: E/Database(2081): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:776) 01-06 18:25:17.420: E/Database(2081): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:769) 01-06 18:25:17.420: E/Database(2081): at android.app.ApplicationContext.openOrCreateDatabase(ApplicationContext.java:476) 01-06 18:25:17.420: E/Database(2081): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:193) 01-06 18:25:17.420: E/Database(2081): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98) 01-06 18:25:17.420: E/Database(2081): at com.blueriver.remocon.database.RemoconDBAdapter.open(RemoconDBAdapter.java:173) 01-06 18:25:17.420: E/Database(2081): at jp.co.airex.andromagic.apl.Zone_settingActivity.onCreate(Zone_settingActivity.java:95) 01-06 18:25:17.420: E/Database(2081): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 01-06 18:25:17.420: E/Database(2081): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 01-06 18:25:17.420: E/Database(2081): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2549) 01-06 18:25:17.420: E/Database(2081): at android.app.ActivityThread.access$2200(ActivityThread.java:121) 01-06 18:25:17.420: E/Database(2081): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1890) 01-06 18:25:17.420: E/Database(2081): at android.os.Handler.dispatchMessage(Handler.java:99) 01-06 18:25:17.420: E/Database(2081): at android.os.Looper.loop(Looper.java:123) 01-06 18:25:17.420: E/Database(2081): at android.app.ActivityThread.main(ActivityThread.java:4466) 01-06 18:25:17.420: E/Database(2081): at java.lang.reflect.Method.invokeNative(Native Method) 01-06 18:25:17.420: E/Database(2081): at java.lang.reflect.Method.invoke(Method.java:521) 01-06 18:25:17.420: E/Database(2081): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 01-06 18:25:17.420: E/Database(2081): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 01-06 18:25:17.420: E/Database(2081): at dalvik.system.NativeStart.main(Native Method) 01-06 18:25:17.427: E/Database(2081): Deleting and re-creating corrupt database /data/data/jp.co.airex.andromagic.apl/databases/andromagic_remocon.db 01-06 18:25:17.427: E/Database(2081): android.database.sqlite.SQLiteDatabaseCorruptException: malformed database schema (REMOCON) - near "NO": syntax error 01-06 18:25:17.427: E/Database(2081): at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method) 01-06 18:25:17.427: E/Database(2081): at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1806) 01-06 18:25:17.427: E/Database(2081): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1756) 01-06 18:25:17.427: E/Database(2081): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:751) 01-06 18:25:17.427: E/Database(2081): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:776) 01-06 18:25:17.427: E/Database(2081): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:769) 01-06 18:25:17.427: E/Database(2081): at android.app.ApplicationContext.openOrCreateDatabase(ApplicationContext.java:476) 01-06 18:25:17.427: E/Database(2081): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:193) 01-06 18:25:17.427: E/Database(2081): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98) 01-06 18:25:17.427: E/Database(2081): at com.blueriver.remocon.database.RemoconDBAdapter.open(RemoconDBAdapter.java:173) 01-06 18:25:17.427: E/Database(2081): at jp.co.airex.andromagic.apl.Zone_settingActivity.onCreate(Zone_settingActivity.java:95) 01-06 18:25:17.427: E/Database(2081): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 01-06 18:25:17.427: E/Database(2081): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 01-06 18:25:17.427: E/Database(2081): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2549) 01-06 18:25:17.427: E/Database(2081): at android.app.ActivityThread.access$2200(ActivityThread.java:121) 01-06 18:25:17.427: E/Database(2081): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1890) 01-06 18:25:17.427: E/Database(2081): at android.os.Handler.dispatchMessage(Handler.java:99) 01-06 18:25:17.427: E/Database(2081): at android.os.Looper.loop(Looper.java:123) 01-06 18:25:17.427: E/Database(2081): at android.app.ActivityThread.main(ActivityThread.java:4466) 01-06 18:25:17.427: E/Database(2081): at java.lang.reflect.Method.invokeNative(Native Method) 01-06 18:25:17.427: E/Database(2081): at java.lang.reflect.Method.invoke(Method.java:521) 01-06 18:25:17.427: E/Database(2081): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 01-06 18:25:17.427: E/Database(2081): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 01-06 18:25:17.427: E/Database(2081): at dalvik.system.NativeStart.main(Native Method)
처음 부터 쌩뚱 맞게 이렇게 글을 올리게 되서 우선 매우 부끄럽습니다.
이벤에 어플리케이션을 개발하게 생각만큼 잘되지 않네요..
안드로이드 2.2 이상 버전의 핸드폰에서부터는 DB값이 잘 읽히고 저장되는데...
이게 2.1로 넘어가니까 즉 SQL 3.5.9 에서는 도통 데이터를 읽어오지 못하더라구요..
확실히 저장이 되었는지도 의문이구요.. 그래서 많은 방법을 생각해봣지만
전혀 감을 잡지 못하겟드라구요
public RemoconDBAdapter open() throws SQLiteException { Log.i("getDatabasePath000",""+this.context.getDatabasePath(DATABASE_NAME)); try { DBHelper = new DatabaseHelper( context, DATABASE_NAME, null, DATABASE_VERSION); db = DBHelper.getWritableDatabase(); Log.i("getDatabasePath111",""+this.context.getDatabasePath(DATABASE_NAME)); // Log.i("dbdbdbdbdb",""+db+" DBHelper.getWritableDatabase();"+DBHelper.getWritableDatabase()); } catch ( SQLiteException ex ) { db = DBHelper.getReadableDatabase(); Log.i("getDatabasePath222",""+this.context.getDatabasePath(DATABASE_NAME)); }
저부분에서는 2 .2버전부터는 아무런 문제가 없다고 하는데 2.1에서는 문제가 있다고 말을 하네요..
helper 를 이용하지 않으려고 햇지만... 도저히 helper를 사용하지 않고서는 사용하기가 여간 까다롭네요 ㅠ
public List<String> getAREA_INFO( ) { List<String> lists_area_name = new ArrayList<String>(); String data = ""; Cursor c = db.query( TABLE_NAME_AREA_INFO , /* table name*/ new String[] { "id", "name" }, /* query column */ null , /* where 절 */ null , /* where argument */ null , /* GROUP BY */ null , /* HAVING */ null ) ; /* order by */ Log.d("AREA_INFO","c : " + c); Log.d("AREA_INFO","if(c==null) : "+(c==null)); Log.d("AREA_INFO","if(c==null) : "+c.getCount()); if( c != null ) { c.moveToFirst() ; Log.d("AREA_INFO","c.getPosition() : "+c.getPosition()); while ( c.isAfterLast() == false ) { c.getInt(c.getColumnIndex("id")) ; data = c.getString(c.getColumnIndex("name") ) ; lists_area_name.add(data); c.moveToNext() ; } } c.close() ; return lists_area_name; }
이곳이 문제가 되는 부분인데...
2.1에서는 쿼리를 그냥...지나가더라구요...그러니까 도중에 데이터를 받아와야 하는 부분을 그냥 훽하니 지나가네요;
커서 문제같기도 하고 아닌거 같기도 하고 그래서 이렇게 질문을 하게 됬습니다.
도대체 어떻게 하면.. 저 부분을 그냥 안지나칠까요..?