我有一个Android应用程序,到目前为止我所有的测试都在我的Froyo手机上。我刚开始在模拟器中对1.6和2.1进行测试,并且在启动时崩溃。它在我的一个观点中找不到一列。Android 2.1和2.2之间的SQLite差异
05-17 23:31:31.446: ERROR/AndroidRuntime(198): Caused by:
android.database.sqlite.SQLiteException: no such column:
categoryTable.currentBal: , while compiling:
SELECT SUM(categoryTable.currentBal) FROM catDisplayTable
WHERE masterCategoryName != "__Hidden__"
视图的模式如下:
CREATE VIEW catDisplayTable AS SELECT categoryTable._id, categoryTable.name,
categoryTable.currentBal, categoryTable.sequence, categoryTable.note,
masterCategoryTable.name AS masterCategoryName FROM categoryTable
LEFT OUTER JOIN masterCategoryTable
ON categoryTable.masterCategoryId = masterCategoryTable._id;
随着adb shell
连接到各种仿真器实例,我已确认:(1)正确的模式是在所有情况下的地方,和(2)在1.6和2.1,SQLite是只是无法定位在该视图中的列,即使作为
SELECT categoryTable.name FROM catDisplayTable;
或
简单的东西SELECT name FROM catDisplayTable;
它可以在2.2罚款。
因此我推测SQLite在Android 2.1和2.2之间有所改变。 This answer有用地给出了每个Android API级别附带的SQLite版本。它说SQLite从3.5.9更新到3.6.22在2.1和2.2之间。看看the SQLite release history,我没有看到任何特别明显的可能解释不同之处的东西。
谁能确切地知道已经改变,并建议我怎么能解决它,所以我的代码工作的Froyo之前的设备?
我只是试图确保你没有跳过明显。在尝试之前,您是否在模拟器/设备上“清除数据”?也许你有旧的版本,这个视图没有在那个模拟器/设备上的列? – katit 2011-05-18 20:53:20
@katit是的,完全干净。我专门创建了新的空AVD来测试它。 – 2011-05-18 21:06:23