2013-11-28 3 views
0

Приложение использует внешнюю базу данных (используя SQLitebrowser). Имейте код для копирования базы данных из папки с данными в папку системы. Приложение отлично работает в эмуляторе с Android 4.3, 4.2, 4.1. App Force Close, когда я запрашиваю базу данных в эмуляторе с 3.0 и 2.3. Когда я перехожу к представлению DDMS и проверяю базы данных data-> data-> package->, я нахожу только 1 файл, поэтому я предполагаю, что метаданные не создаются или не генерируются. Я не уверен, какая часть кода не поддерживается в версиях 3.0 и 2.3. код фрагмент:Принудительное закрытие при запросе db

Button b1=(Button)findViewById(R.id.button1); 
     b1.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       name=et1.getText().toString(); 
       Intent i=new Intent(v.getContext(),Display.class); 
       i.putExtra("dname",name); 
       i.putExtra("dr", r); 
       i.putExtra("dn",n); 
       startActivity(i); 

       } 
      }); 

LogCat:

11-29 00:13:18.897: D/dalvikvm(328): GC_EXTERNAL_ALLOC freed 972 objects/67008 bytes in 83ms 
11-29 00:13:25.537: I/Database(328): sqlite returned: error code = 14, msg = cannot open file at source line 25467 
11-29 00:13:25.537: E/Database(328): sqlite3_open_v2("/data/data/com.example.ast/databases/Astrology", &handle, 1, NULL) failed 
11-29 00:13:25.677: I/Database(328): New database is being copied to device! 
11-29 00:13:25.897: I/Database(328): New database has been copied to device! 
11-29 00:13:25.917: I/Database(328): sqlite returned: error code = 1, msg = no such table: android_metadata 
11-29 00:13:25.917: E/Database(328): SELECT locale FROM android_metadata failed 
11-29 00:13:25.957: E/Database(328): Failed to setLocale() when constructing, closing the database 
11-29 00:13:25.957: E/Database(328): android.database.sqlite.SQLiteException: no such table: android_metadata 
11-29 00:13:25.957: E/Database(328): at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method) 
11-29 00:13:25.957: E/Database(328): at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1950) 
11-29 00:13:25.957: E/Database(328): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1818) 
11-29 00:13:25.957: E/Database(328): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817) 
11-29 00:13:25.957: E/Database(328): at com.example.ast.DataBaseHelper.checkDataBase(DataBaseHelper.java:68) 
11-29 00:13:25.957: E/Database(328): at com.example.ast.DataBaseHelper.openDataBase(DataBaseHelper.java:122) 
11-29 00:13:25.957: E/Database(328): at com.example.ast.Displayprediction.onCreate(Displayprediction.java:49) 
11-29 00:13:25.957: E/Database(328): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
11-29 00:13:25.957: E/Database(328): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
11-29 00:13:25.957: E/Database(328): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
11-29 00:13:25.957: E/Database(328): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
11-29 00:13:25.957: E/Database(328): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
11-29 00:13:25.957: E/Database(328): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-29 00:13:25.957: E/Database(328): at android.os.Looper.loop(Looper.java:123) 
11-29 00:13:25.957: E/Database(328): at android.app.ActivityThread.main(ActivityThread.java:4627) 
11-29 00:13:25.957: E/Database(328): at java.lang.reflect.Method.invokeNative(Native Method) 
11-29 00:13:25.957: E/Database(328): at java.lang.reflect.Method.invoke(Method.java:521) 
11-29 00:13:25.957: E/Database(328): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
11-29 00:13:25.957: E/Database(328): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
11-29 00:13:25.957: E/Database(328): at dalvik.system.NativeStart.main(Native Method) 
11-29 00:13:25.957: I/Database(328): New database is being copied to device! 
11-29 00:13:26.147: I/Database(328): New database has been copied to device! 
11-29 00:13:26.147: D/AndroidRuntime(328): Shutting down VM 
11-29 00:13:26.157: W/dalvikvm(328): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
11-29 00:13:26.167: E/AndroidRuntime(328): FATAL EXCEPTION: main 
11-29 00:13:26.167: E/AndroidRuntime(328): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ast/com.example.ast.Displayprediction}: java.lang.NullPointerException 
11-29 00:13:26.167: E/AndroidRuntime(328): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
11-29 00:13:26.167: E/AndroidRuntime(328): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
11-29 00:13:26.167: E/AndroidRuntime(328): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
11-29 00:13:26.167: E/AndroidRuntime(328): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
11-29 00:13:26.167: E/AndroidRuntime(328): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-29 00:13:26.167: E/AndroidRuntime(328): at android.os.Looper.loop(Looper.java:123) 
11-29 00:13:26.167: E/AndroidRuntime(328): at android.app.ActivityThread.main(ActivityThread.java:4627) 
11-29 00:13:26.167: E/AndroidRuntime(328): at java.lang.reflect.Method.invokeNative(Native Method) 
11-29 00:13:26.167: E/AndroidRuntime(328): at java.lang.reflect.Method.invoke(Method.java:521) 
11-29 00:13:26.167: E/AndroidRuntime(328): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
11-29 00:13:26.167: E/AndroidRuntime(328): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
11-29 00:13:26.167: E/AndroidRuntime(328): at dalvik.system.NativeStart.main(Native Method) 
11-29 00:13:26.167: E/AndroidRuntime(328): Caused by: java.lang.NullPointerException 
11-29 00:13:26.167: E/AndroidRuntime(328): at com.example.ast.DataBaseHelper.getrPred(DataBaseHelper.java:208) 
11-29 00:13:26.167: E/AndroidRuntime(328): at com.example.ast.Displayprediction.onCreate(Displayprediction.java:106) 
11-29 00:13:26.167: E/AndroidRuntime(328): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
11-29 00:13:26.167: E/AndroidRuntime(328): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
11-29 00:13:26.167: E/AndroidRuntime(328): ... 11 more 
11-29 00:13:30.357: I/Process(328): Sending signal. PID: 328 SIG: 9 
+0

Refer @ http://stackoverflow.com/questions/7647524/ – Subbu

ответ

0

Здесь у вас есть проблема:

sqlite returned: error code = 1, msg = no such table: android_metadata 

Это означает, что именно он Сэя:

no such table: android_metadata 

Ok, сейчас время для зол UTC: Android использует эту таблицу для обработки некоторых метаданных базы данных db i.e. Если вы создали файл базы данных на ПК (или даже на Mac), то нет конкретных таблиц для Android. Я предпочитаю создавать db из скрипта на устройстве и заполнять его данными (файлы CSV чрезвычайно удобны для загрузки данных). Это невозможно - просто создайте на устройстве какое-нибудь db, скопируйте его с устройства на какой-нибудь инструмент db на своем ПК. Ваши собственные таблицы будут заполняться данными и использоваться в проекте.

Смежные вопросы