java - SQLite 表错误
问题描述
我正在使用 Android 中的 SQLite。我的表中只有 1 个对象,即名称。我想制作arraylist并在recyclerview中使用它。但我收到下面给出的错误。有了它,我知道光标有一些问题,但现在不是什么。
错误
Failed to read row 0, column -1 from a CursorWindow which has 7 rows, 1 columns.
代码到
public List<FavNames> getFav(){
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] sqlMasterSelect = {"name"};
String sqlMasterTable = "FavNames";
qb.setTables(sqlMasterTable);
Cursor c = qb.query(db,sqlMasterSelect,
null,null,null,null,null);
final List<FavNames> masterResult = new ArrayList<>();
if (c.moveToFirst()){
do {
masterResult.add(new FavNames(c
.getString(c.getColumnIndex("name"))));
}while (c.moveToNext());
}
return masterResult;
}
回收站视图
recyclerView = findViewById(R.id.favRecycler);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
fav = new Database(this).getFav();
adapter = new FavAdapter(getBaseContext(), fav);
recyclerView.setAdapter(adapter);
解决方案
您必须确保列名是name
You don't need SQLiteQueryBuilder for such a simple query。
public List<FavNames> getFav(){
SQLiteDatabase db = getReadableDatabase();
String sqlMasterTable = "FavNames";
String sql = "SELECT * FROM " + sqlMasterTable;
Cursor c = db.rawQuery(sql, null);
final List<FavNames> masterResult = new ArrayList<>();
if (c.moveToFirst()){
do {
masterResult.add(new FavNames(c.getString(0).toString()));
}while (c.moveToNext());
}
return masterResult;
}
这只是一个简单的 rawQuery
我希望我没有拼写错误。
推荐阅读
- javascript - 匿名函数后 indexOf 检查失败
- reactjs - React 和 Three.js 构造函数期望一个赋值或函数调用,而是看到一个表达式
- java - 在 Spring 中使用 JPA 规范获取要执行的查询
- java - Spring boot Pageable按不在Domain对象中的参数排序
- javascript - 在 javascript 中合并对象,同时忽略未定义的属性值(jQuery.fn.extend 行为)
- postgresql - 更改 PgSQL 中的类型以重命名属性不起作用
- python-3.x - 将表格尺寸限制为 python-pptx 中的表格占位符尺寸
- javascript - 我正在使用 linkify 来解析字符串。现在有一个字符串 "10 is < 20" 。linkify 也创建了一个我不想要的链接。有什么修复吗?
- python - 试图更新数据库中的帖子。但是找不到页面(404)?想知道如何更新数据库中的数据?
- java - Tomcat 项目在 Wildfly 13 中给出 ServletException: java.lang.NoSuchMethodError: org.apache.jasper.runtime.JspRuntimeLibrary.releaseTag