如何使用游标从sqlite android中的多个列中获取数据
Posted
技术标签:
【中文标题】如何使用游标从sqlite android中的多个列中获取数据【英文标题】:How to fetch data from multiple columns in sqlite android using cursor 【发布时间】:2021-09-24 13:52:05 【问题描述】:我想使用以下代码使用光标从多行和多列中获取数据
Cursor getallrecords()
SQLiteDatabase dbb = this.getReadableDatabase();
Cursor cursor = null;
if (dbb != null)
Log.d("cursor","not null");
cursor = dbb.rawQuery(" SELECT * FROM " + TABLE_NAME,null);
else
Log.d("cursor","null");
return cursor;
在 logcat 上显示光标不为空并返回数据。但是当我尝试使用下面的代码设置游标在 ArrayList 上进行的数据时。
void read()
Cursor cursor = save_barcode.getallrecords();
if (cursor.getCount() != 0)
cursor.moveToFirst();
while(cursor.moveToNext())
url.add(cursor.getString(1));
type.add(cursor.getString(2));
date_and_time.add(cursor.getString(3));
if (!url.isEmpty())
Log.d("message","not null");
else
Log.d("url","null");
if (!type.isEmpty())
Log.d("message","not null");
else
Log.d("type","null");
if (!date_and_time.isEmpty())
Log.d("message","not null");
else
Log.d("date","null");
然后在logcat中显示URL,date_and_time, type这三个都是空的。因此,如果有人知道如何使用光标从多行和多列中获取数据,请帮助我
【问题讨论】:
这能回答你的问题吗? What's the best way to iterate an android Cursor? 【参考方案1】:您的代码的明显问题是您使用的是moveToFirst()
,然后是moveToNext()
,因此可以肯定您丢失了第一行。
如果表中只有 1 行,那么列表将为空。
不需要检查getCount()
,所以删除if
,不需要moveToFirst()
。
改成这样:
void read()
Cursor cursor = save_barcode.getallrecords();
if (cursor == null) return;
while (cursor.moveToNext())
url.add(cursor.getString(1));
type.add(cursor.getString(2));
date_and_time.add(cursor.getString(3));
cursor.close();
...................
【讨论】:
兄弟,当我尝试在回收视图上设置数据时,我的 apk 仍然崩溃。在 logcat 中,它显示 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on an null object reference。 @Akshit 这不是因为我的答案中的代码。当您致电setText()
时,您的应用会崩溃。
因为 settext 方法没有得到任何值,这显然意味着我们在获取数据时缺少一些东西。
@Akshit 不,这不是问题。问题是您调用 setText 的 TextView 为空。这就是空对象引用的意思。
看兄弟我用 holder.getBarcodeUrl.setText(String.valueOf(url.get(position)));在我的 recycleview 持有者上,url 引用了一个 arraylist,它使用 cunstructor 从 read 方法中获取。以上是关于如何使用游标从sqlite android中的多个列中获取数据的主要内容,如果未能解决你的问题,请参考以下文章
有没有一种方法可以使用 android-sqlite 游标从列数未知的表中选择 *
无法从 SQLite 检索数据说 android (Eclipse) 中不存在该列