在android设备上运行数据库时,数据库变为空,没有行
您好,当我在emulator上运行我的应用程序时,我遇到了一个wierd问题。它工作正常,并在列表视图中显示数据库中的所有公司名称,但当我在真实设备上运行它时,数据库将变空,没有行。(cursor.getCount()返回0)。。我不知道为什么会这样!?提前谢谢 我的日志:在android设备上运行数据库时,数据库变为空,没有行,android,sqlite,listview,Android,Sqlite,Listview,您好,当我在emulator上运行我的应用程序时,我遇到了一个wierd问题。它工作正常,并在列表视图中显示数据库中的所有公司名称,但当我在真实设备上运行它时,数据库将变空,没有行。(cursor.getCount()返回0)。。我不知道为什么会这样!?提前谢谢 我的日志: 06-15 18:56:23.031: D/dalvikvm(9213): GC_FOR_ALLOC freed 77K, 3% free 12870K/13191K, paused 30ms 06-15 18:56:23.
06-15 18:56:23.031: D/dalvikvm(9213): GC_FOR_ALLOC freed 77K, 3% free 12870K/13191K, paused 30ms
06-15 18:56:23.066: D/dalvikvm(9213): GC_FOR_ALLOC freed 109K, 4% free 12954K/13447K, paused 26ms
06-15 18:56:23.066: I/dalvikvm-heap(9213): Grow heap (frag case) to 13.093MB for 262160-byte allocation
06-15 18:56:23.086: D/dalvikvm(9213): GC_FOR_ALLOC freed <1K, 5% free 13210K/13767K, paused 13ms
06-15 18:56:23.106: D/dalvikvm(9213): GC_FOR_ALLOC freed 0K, 5% free 13210K/13767K, paused 17ms
06-15 18:56:23.106: I/dalvikvm-heap(9213): Grow heap (frag case) to 13.537MB for 465140-byte allocation
06-15 18:56:23.126: D/dalvikvm(9213): GC_CONCURRENT freed 0K, 5% free 13664K/14279K, paused 1ms+1ms
06-15 18:56:23.161: D/dalvikvm(9213): GC_FOR_ALLOC freed 256K, 7% free 13409K/14279K, paused 13ms
06-15 18:56:23.161: I/dalvikvm-heap(9213): Grow heap (frag case) to 13.743MB for 476816-byte allocation
06-15 18:56:23.181: D/dalvikvm(9213): GC_CONCURRENT freed <1K, 7% free 13875K/14791K, paused 1ms+1ms
06-15 18:56:23.261: D/dalvikvm(9213): GC_FOR_ALLOC freed 0K, 7% free 13875K/14791K, paused 32ms
06-15 18:56:23.261: I/dalvikvm-heap(9213): Grow heap (frag case) to 14.550MB for 846420-byte allocation
06-15 18:56:23.286: D/dalvikvm(9213): GC_CONCURRENT freed 0K, 6% free 14702K/15623K, paused 2ms+1ms
06-15 18:56:23.616: D/CLIPBOARD(9213): Hide Clipboard dialog at Starting input: finished by someone else... !
06-15 18:56:36.801: E/yallaaaaaaaaaaaa(9213): 0
06-15 18:56:36.801: I/System.out(9213): count0
06-15 18:56:23.031:D/dalvikvm(9213):释放77K,3%释放12870K/13191K,暂停30毫秒
6-15 18:56:23.066:D/dalvikvm(9213):释放109K的所有物质的GC_,4%的自由12954K/13447K,暂停26ms
06-15 18:56:23.066:I/dalvikvm堆(9213):为262160字节分配将堆(frag案例)增长到13.093MB
06-15 18:56:23.086:D/dalvikvm(9213):GC_FOR_ALLOC freed不久前,我也遇到了类似的问题
创建一个临时表,比如temp,并从另一个表中插入行
public void populate_temp()
{
dbsqlite.execSQL("delete from temp");
dbsqlite.execSQL(" insert into temp(name) select city from City ORDER BY city ASC ");
}
然后通过从临时表中检索值来填充列表
public List<String> getAllLabels()
{
List<String> labels = new ArrayList<String>();
String selectQuery = "select DISTINCT name from temp";
dbsqlite = this.getReadableDatabase();
Cursor cursor = dbsqlite.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
labels.add(cursor.getString(cursor.getColumnIndex("name")));
} while (cursor.moveToNext());
}
cursor.close();
dbsqlite.close();
return labels;
}
公共列表getAllLabels()
{
列表标签=新的ArrayList();
String selectQuery=“从临时文件中选择不同的名称”;
dbsqlite=this.getReadableDatabase();
Cursor Cursor=dbsqlite.rawQuery(selectQuery,null);
if(cursor.moveToFirst()){
做{
labels.add(cursor.getString(cursor.getColumnIndex(“name”)));
}while(cursor.moveToNext());
}
cursor.close();
dbsqlite.close();
退货标签;
}
这可能不是一个好的编程实践,但效果很好!;) 日志怎么说?你的详细情况是什么?@22kar我刚刚发布了我的logcat@Tarek我创建了一个数据库,并使用sqlite浏览器将一些公司的名称插入其中,我想在listview中显示这些公司,这在我尝试在emulator上运行应用程序时起到了作用,但是当我尝试在真实设备上测试它时,活动为空,select查询的结果计数为0,这意味着移动设备上的数据库为空,只有没有行值的表。原因可能是以这种方式插入行仅适用于根手机,而不适用于非根手机。幸运的是,仿真器已经扎根。