android sqliteDatabase表娱乐

时间:2012-01-04 08:15:53

标签: java android database sqlite

在运行我的Android应用时,我已经创建了一个database和一个表user

问题是我第一次创建user表时,我想念要创建的字段password。 所以我重写了我的代码,以便再次创建user表,其中包含字段password

但问题是我把代码放在我的DatabaseHelper类的onCreate方法中。

由于数据库已经存在,函数onCreate将永远不会调用。

任何人都可以告诉我如何解决这个问题。?

4 个答案:

答案 0 :(得分:4)

您可以使用onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法 DatabaseHelper类

db - 数据库。

oldVersion - 旧的数据库版本。

newVersion - 新的数据库版本。

需要升级数据库时调用。实现应使用此方法删除表,添加表或执行升级到新架构版本所需的任何其他操作。 可以找到SQLite ALTER TABLE文档here。如果添加新列,则可以使用ALTER TABLE将它们插入到实时表中。如果重命名或删除列,则可以使用ALTER TABLE重命名旧表,然后创建新表,然后使用旧表的内容填充新表。 参数

答案 1 :(得分:2)

几种可能性:

  1. 如果您在设备上拥有超级用户权限或使用模拟器 - 您可以使用adb shell查找您的SQLite数据库并简单地删除它(因此它会在您的应用下次启动时重新创建)或者使用sqlite command line tool - 自己修改表结构。当然,这只适用于您在开发过程中遗漏某些内容并愿意快速修复它,而不考虑任何现有用户。

  2. 增加应用程序的版本号并实现onUpgrade方法,您可以在现有数据库上执行所有必需的转换。这应该用于实际应用程序版本升级,考虑现有用户及其应用程序安装。

答案 2 :(得分:2)

一个简单的选项就是在设置菜单中卸载设备上的应用程序(或使用adb uninstall命令),如果再次运行应用程序,数据库也将被删除并重新创建。

快速而简单,无需实施onUpgrade或其他东西,这将适用于应用程序上市/正在使用的时候。

答案 3 :(得分:0)

您只需使用adb shell访问您的sqlite数据库,如果您的应用已安装在手机上,则需要root访问权限。这是一些reference - look for Examining sqlite3 Databases from a Remote Shell

其他方法是从Settings-> Applications-> Manage Applications-> Your App中删除您的数据库,然后点击Clear Data Button,它将删除您的Sqlite数据库和您的共享首选项。在此之后,您可以使用正确的表DDL重新运行您的应用程序,并使用正确的定义创建数据库。

从编程方面来说,您需要从帮助程序覆盖onOpen并使用db.execSql()放置表更改DDL。把你的alter table放在那里,或者先放下你的表,然后用正确的定义创建一个新表。 这是课程'参考SQLiteOpenHelperSQLiteDatabase 另请参阅here