从android中的数据库读取到arraylist

Posted

技术标签:

【中文标题】从android中的数据库读取到arraylist【英文标题】:Read from a database in android to an arraylist 【发布时间】:2011-10-14 18:36:56 【问题描述】:

我是 android 开发的新手,不知道如何从我的database/table 读取到 arrayList。现在我有:

      Cursor c = myDB.rawQuery("SELECT * FROM " + TableName , null);

       int Column1 = c.getColumnIndex("Field1");
       int Column2 = c.getColumnIndex("Field2");

       // Check if our result was valid.
       c.moveToFirst();
       if (c != null) 
        // Loop through all Results
        do 
         String Name = c.getString(Column1);
         int Age = c.getInt(Column2);
         Data =Data +Name+"/"+Age+"\n";
        while(c.moveToNext());
       
       TextView tv = new TextView(this);
       tv.setText(Data);
       setContentView(tv);
      
      catch(Exception e) 
       Log.e("Error", "Error", e);
       finally 
       if (myDB != null)
        myDB.close();
      

如何将其读入数组列表?

【问题讨论】:

【参考方案1】:

这是一个代码,它向您展示如何从数据库查询中获取 ArrayList。

public ArrayList<String> GetAllValues(String aTable,String[] aColumn)

    ArrayList<String> list = new ArrayList<String>();
    Cursor cursor = sqlDB.query(aTable, aColumn, null, null, null, null, null);
    if (cursor.moveToFirst())
    
        do
        
            list.add(cursor.getString(0));
        
        while (cursor.moveToNext());
    
    if (cursor != null && !cursor.isClosed()) 
    
        cursor.close();
    

    return list;

如果您在“aColumn”中提供 null,它将为您提供所有列。我希望它会有所帮助。

【讨论】:

【参考方案2】:
//ArrayList of Calllog class objects
ArrayList<CallLog> arrCallLogs = null;
Cursor curCalllog = myDB.rawQuery("SELECT * FROM " + TableName , null);

            if(curCalllog != null && curCalllog.moveToFirst()) 
            arrCallLogs = new ArrayList<CallLog>();
            while (curCalllog.isAfterLast() == false) 
                //Calllog is a class with list of fileds 
                CallLog callLog = new CallLog();
                callLog.setId(curCalllog.getLong(curCalllog.getColumnIndex(KEY_ROWID)));
                callLog.setName(curCalllog.getString(curCalllog.getColumnIndex(KEY_NAME)));
                callLog.setNumber(curCalllog.getString(curCalllog.getColumnIndex(KEY_NUMBER)));
                callLog.setNumberType(curCalllog.getInt(curCalllog.getColumnIndex(KEY_NUMBERTYPE)));
                callLog.setCallType(curCalllog.getInt(curCalllog.getColumnIndex(KEY_CALLTYPE)));
                callLog.setDatetime(curCalllog.getLong(curCalllog.getColumnIndex(KEY_DATETIME)));
                callLog.setDuration(curCalllog.getLong(curCalllog.getColumnIndex(KEY_DURATION)));
                callLog.set_new(curCalllog.getInt(curCalllog.getColumnIndex(KEY_NEW)));
                arrCallLogs.add(callLog);
                curCalllog.moveToNext();
            
        
        curCalllog.close();
    myDB.close();

这是如何从 Cursor 创建 arrayList 的示例。

这里有一个类名 Calllog,其中包含字段列表以及 setter 和 getter 方法。 在这里,我使用 Cursor 制作了一个 Calllog 对象的 ArrayList

【讨论】:

以上是关于从android中的数据库读取到arraylist的主要内容,如果未能解决你的问题,请参考以下文章

java ArrayList 如何读取文件中的数据,并且搜索

如何从 Firestore 云数据库中读取文档中的 ArrayLists?

Android 中的 JSONArray 到 ArrayList

如何直接从文件中将项目添加到 Java 中的 ArrayList?

如何使用 Firebase 实时数据库在不知道 Android 索引的情况下更新 ArrayList 中的元素?

如何使用 HashMap 从 Android 的 Firebase 中的子节点获取数据?