我的应用程序中有一个SQLite数据库。它有三列。是_id,TEXT和Location。如果我想从TEXT列返回所有数据,我应该使用cursor.getColumnIndex(2)
吗?我显然是SQLite的新手。并且所有的帮助表示赞赏。谢谢大家!
答案 0 :(得分:5)
是的,朋友,你是新人。
首先,您的数据库没有三列,而是您的表。数据库具有表,列(字段)和行(记录)表。
其次,TEXT
不是列的有效名称,因为它是一种数据类型。我们假设您调用了三列id
,theText
和location
- 然后,如果您选择了要返回的所有三列,则可以通过以下方式访问第二列:
cursor.getString(1); // that's the second column returned
或
cursor.getString(cursor.getColumnIndex( "theText" ) );
但是,您可以让sqlite为您完成大部分工作,只选择您感兴趣的列,然后您cursor.getString(0)
,因为它是唯一的列返回。
有关更多相关说明,请在问题中发布您的代码。
答案 1 :(得分: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;
}
检索:
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());
}
希望这会对你有所帮助:)。