Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android设备上运行数据库时,数据库变为空,没有行_Android_Sqlite_Listview - Fatal编程技术网

在android设备上运行数据库时,数据库变为空,没有行

在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.

您好,当我在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.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,这意味着移动设备上的数据库为空,只有没有行值的表。原因可能是以这种方式插入行仅适用于根手机,而不适用于非根手机。幸运的是,仿真器已经扎根。