如何从一列Android SQL返回所有数据

时间:2015-03-04 22:07:34

标签: android sqlite

我的应用程序中有一个SQLite数据库。它有三列。是_id,TEXT和Location。如果我想从TEXT列返回所有数据,我应该使用cursor.getColumnIndex(2)吗?我显然是SQLite的新手。并且所有的帮助表示赞赏。谢谢大家!

3 个答案:

答案 0 :(得分:5)

是的,朋友,你是新人。

首先,您的数据库没有三列,而是您的。数据库具有表,列(字段)和行(记录)表。

其次,TEXT不是列的有效名称,因为它是一种数据类型。我们假设您调用了三列idtheTextlocation - 然后,如果您选择了要返回的所有三列,则可以通过以下方式访问第二列:

cursor.getString(1); // that's the second column returned

cursor.getString(cursor.getColumnIndex( "theText" ) );

但是,您可以让sqlite为您完成大部分工作,只选择您感兴趣的列,然后您cursor.getString(0),因为它是唯一的列返回。

有关更多相关说明,请在问题中发布您的代码。

答案 1 :(得分:1)

只需应用获取所有联系人的查询并获取字符串类型数组,然后在该数组中添加所需记录,如下所示

我希望这段代码可以帮助你

    DBHelper中的
  1. 获取特定列的记录:

    public ArrayList<String> getAllCotactsEmail() {
    
        ArrayList<String> arrayList=new ArrayList<>();
    
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor res =  db.rawQuery( "select * from contacts", null );
        res.moveToFirst();
    
        if (res != null)
        {
            while(res.isAfterLast() == false){
                arrayList.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_EMAIL)));
                Log.d("emailssinlisttt",arrayList.toString());
    
                res.moveToNext();
            }}
        return arrayList;
    
    }
    
  2. 检索:

    email=mydb.getAllCotactsEmail();
    
    
    Log.d("emaillllll",email.toString());
    

答案 2 :(得分:0)

您需要查询数据库以获取数据。此查询将返回一个Cursor,其中包含您在查询中指定的列。

要进行查询,您需要从ContentResolver调用query()方法。要获取ContentResolver,您可以使用类似Activity的上下文中的getContentResolver():

getContentResolver.query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);

要了解所有参数,请参阅:ContentResolver

在您的情况下,您只需要TEXT列,因此传递一个String数组,其中包含用于投影参数的TEXT列名称。 您需要所有行,因此您的选择和selectionArgs参数必须为null。 如果您不关心订单,请为sortOrder传递null(行将按ID排序):

Cursor c = getContentResolver.query(yourUri, new String[]{"TEXT"}, null, null, null)

此查询将返回一个游标,从游标中提取您的值,形成如下循环:

if(c.moveToFirst()) {
            do {
                final String text = c.getString(c.getColumnIndex("TEXT"));
            } while (c.moveToNext());
        } 

希望这会对你有所帮助:)。