2013-01-11 18 views
3


我知道有很多主题具有相同的标题,但我已经尝试了所有这些主题。我无法解决我的问题。
我得到的错误是这样的:

android.database.sqlite.SQLiteException:无法将只读数据库从版本0升级到1:/data/data/com.halilkaya.flashcard/databases/flashcarddb。 db

实际上,它在仿真器上工作,但是当我将它安装在手机上时,它不起作用!android:无法将只读数据库从版本0升级到1

+0

你在调用'getReadableDatabase()'或'getWritableDatabase()'吗?请发布您用于创建和打开数据库的代码。 – Sam

+0

它可能是存储在内存中的损坏数据。尝试在设备设置中进入应用程序并管理应用程序,然后清除数据。 – codeMagic

+0

是的,我打电话给很多地方。我把它放到try ... catch结构中,并且它给出了这个错误。 – halilkaya

回答

4

希望你删除表,并对其进行升级aagain如下

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS " + LOCATION_TABLE); 
    db.execSQL("DROP TABLE IF EXISTS " + PHONE_TABLE); 
    // Create tables again 
    onCreate(db); 

} 
+0

我有一张桌子。如果存在,我放弃了它......但它不再工作。 – halilkaya

+0

希望你没有使用dbdelete,请再试一次... http://stackoverflow.com/questions/7313029/sqliteexception-cant-upgrade-read-only-database-from-version-1-to-2 –

+0

我看了在这个话题上。我已经没有使用db.delete。在这个主题中,解决方案是drop table如果存在...我也试过了,但不幸的是它没有再次工作:( – halilkaya

0

当我打这个还有一个SQL异常早在logcat的(我的HTC ONEX测试手机喜欢隐藏崩溃,让我去寻找他们而不是崩溃)。我的升级逻辑中有一个格式错误的声明。一旦我清除了,我不再有“不能升级只读数据库”的错误。

0

这是一个使用意图从onclick按钮开始的类。

public class disp_emails_sent extends Activity 

...... 
protected void onCreate(Bundle bd) 
    { 
     super.onCreate(bd); 
     setContentView(R.layout.disp_db_res); 

     lv = (ListView) findViewById(R.id.myEmail_list); 

     List<String> arrayL = new ArrayList<String>(); 
     db_handler dbHand = new db_handler(disp_emails_sent.this); 

(disp_emails_sent.this)上面显示的通常是您要传递上下文的位置。这个.getApplicationContext()不适合我,但是这样做。

不知道它是如何工作的,但它做到了。

尝试了社区提供的上述答案,但这不是问题。

想要一个解释,如果任何人有它。

相关问题