java.lang.OutOfMemoryError: [内存耗尽] 从 Sqlite Android 读取数据时

萨钦·布尔达克

我已成功将数据保存在 SQLite DB 中。但是从我的 SQLite 数据库读取数据时出现错误,然后我的应用程序崩溃了。

错误信息

01-01 05:42:13.916 607-607/com.example.eyesaver I/dalvikvm:   | sysTid=607 nice=0 sched=0/0 cgrp=apps handle=68313184
01-01 05:42:13.916 607-607/com.example.eyesaver I/dalvikvm:   | sysTid=607 nice=0 sched=0/0 cgrp=apps handle=68313184
01-01 05:42:13.916 607-607/com.example.eyesaver I/dalvikvm:   | state=R schedstat=( 0 0 0 ) utm=2910 stm=2910 core=0
01-01 05:42:13.916 607-607/com.example.eyesaver I/dalvikvm:   | state=R schedstat=( 0 0 0 ) utm=2910 stm=2910 core=0
01-01 05:42:13.917 607-607/com.example.eyesaver I/dalvikvm:     at android.database.CursorWindow.nativeGetString(Native Method)
01-01 05:42:13.917 607-607/com.example.eyesaver I/dalvikvm:     at android.database.CursorWindow.nativeGetString(Native Method)
01-01 05:42:13.917 607-607/com.example.eyesaver I/dalvikvm:     at android.database.CursorWindow.getString(CursorWindow.java:434)
01-01 05:42:13.917 607-607/com.example.eyesaver I/dalvikvm:     at android.database.CursorWindow.getString(CursorWindow.java:434)
01-01 05:42:13.917 607-607/com.example.eyesaver I/dalvikvm:     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
01-01 05:42:13.917 607-607/com.example.eyesaver I/dalvikvm:     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
01-01 05:42:13.917 607-607/com.example.eyesaver I/dalvikvm:     at com.example.eyesaver.SQ_Lite_DB.ReadSqliteData(SQ_Lite_DB.java:59)
01-01 05:42:13.917 607-607/com.example.eyesaver I/dalvikvm:     at com.example.eyesaver.SQ_Lite_DB.ReadSqliteData(SQ_Lite_DB.java:59)// I marked this line in code

1-01 05:42:16.189 607-607/com.example.eyesaver E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.eyesaver, PID: 607
    java.lang.OutOfMemoryError: [memory exhausted]
        at dalvik.system.NativeStart.main(Native Method)
01-01 05:42:16.189 607-607/com.example.eyesaver E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.eyesaver, PID: 607
    java.lang.OutOfMemoryError: [memory exhausted]
        at dalvik.system.NativeStart.main(Native Method)

我正在使用“ReadSqliteData()”方法从我的 SQLite 读取数据

ReadSqliteData() 方法

public void ReadSqliteData(Context context){
    ArrayList<Model> list = new ArrayList<>();
    Adpter adpter = new Adpter(list,context);
    SQLiteDatabase database = getWritableDatabase();
    Cursor cursor = database.rawQuery("Select name, image from orders",null);
    if (cursor.moveToFirst()){
        while (cursor.moveToFirst()){
            Model model = new Model();
            model.setImage(cursor.getString(0));   //i am getting error here 
            model.setName(cursor.getString(1));    //i am getting error here 
            list.add(model);
        }
        adpter.notifyDataSetChanged();
    }
    cursor.close();
    database.close();
}

还有一个问题:我的 id 在 SQLite 数据库中为空,我不知道为什么?我正在创建一个这样的表

@Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(
                "Create Table orders"+
                        "(id INTERGER PRIMARY KEY,"+
                        "image text ,"+
                        "name text)"
        );
    }

如果您需要任何其他信息,请告诉我。

福帕斯

您的循环永远不会结束,因为在每次迭代中,您将光标的索引设置在第一行,moveToFirst()而不会前进到下一行。
使用moveToNext()

public void ReadSqliteData(Context context){
    ArrayList<Model> list = new ArrayList<>();
    Adpter adpter = new Adpter(list,context);
    SQLiteDatabase database = getWritableDatabase();
    Cursor cursor = database.rawQuery("Select name, image from orders",null);
    while (cursor.moveToNext()){
        Model model = new Model();
        model.setImage(cursor.getString(0));            
        model.setName(cursor.getString(1));    
        list.add(model);
    }
    adpter.notifyDataSetChanged();
    cursor.close();
    database.close();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

java.lang.OutOfMemoryError:本机内存耗尽

java.lang.OutOfMemoryError:Android

Android java.lang.OutOfMemoryError?

我的应用程序消耗太多内存,有时用 java.lang.OutOfMemoryError 关闭:

尝试从数据库获取数据时内存耗尽(android)

EDF文件解析时Android应用程序运行到java.lang.OutOfMemoryError

java.lang.OutOfMemoryError:尝试抛出OutOfMemoryError时抛出了OutOfMemoryError;没有可用的堆栈跟踪

如何清除Android PDFView中的java.lang.OutOfMemoryError?

带有大量图像的android java.lang.OutOfMemoryError recyclerview

Android Robolectric Gradle-java.lang.OutOfMemoryError:PermGen空间

android应用程序中的java.lang.OutOfMemoryError

如何解决Android中的java.lang.OutOfMemoryError问题

Android java.lang.OutOfMemoryError仅在Samsung设备上

java.lang.OutOfMemoryError:位图大小超出VM预算-Android

ListView android滚动期间出现java.lang.OutOfMemoryError

如何在Android中修复java.lang.OutOfMemoryError

Xamarin android 部署上的 Java,Lang.OutOfMemoryError

Android Studio:E/UncaughtException:java.lang.OutOfMemoryError

java.lang.OutOfMemoryError:使用Apache POI读取excel时的Java堆空间

Java 在读取文件但同时使用流时避免 java.lang.OutOfMemoryError

Byte []和java.lang.OutOfMemoryError读取文件

当BitmapFactory.nativeDecodeStream()耗尽android应用程序的内存时

当并行度> 1时,Flink + Kafka,java.lang.OutOfMemoryError

java.lang.OutOfMemoryError 在 viewFlipper 中显示图像列表时

从Eclipse运行ant时javac:java.lang.OutOfMemoryError

从R写入Excel时处理java.lang.OutOfMemoryError

调用 getDrawable() 时出现 java.lang.OutOfMemoryError

加密/解密大文件时出现java.lang.OutOfMemoryError

捕获java.lang.OutOfMemoryError?