android - 为数据库创建的这个游标有什么错误?
问题描述
我在 android 中创建一个 SQLite 数据库。但是每当我调用方法“displayDatabase()”时就会出现一些错误。
请帮忙!!
这是displayDatabase()方法:
public void displayDatabase() {
DataDbHelper mDbHelper = new DataDbHelper(this);
SQLiteDatabase db = mDbHelper.getReadableDatabase();
String[] projection = {DataContract.DataEntry.COLUMN_PROJECT_NAME,
DataContract.DataEntry.COLUMN_HEAD,
DataContract.DataEntry.COLUMN_CITY,
DataContract.DataEntry.COLUMN_COST};
Cursor c = db.query(DataContract.DataEntry.TABLE_NAME,
projection,
null,
null,
null,
null,
null);
TextView textView = (TextView) findViewById(R.id.textview);
try {
//textView.setText("The database contains - " + c.getColumnCount() + "Columns containing data");
textView.setText("Hello Welcome\n");
textView.append("-" + DataContract.DataEntry._ID
+ "---" + DataContract.DataEntry.COLUMN_PROJECT_NAME
+ "---" + DataContract.DataEntry.COLUMN_HEAD
+ "---" + DataContract.DataEntry.COLUMN_CITY
+ "---" + DataContract.DataEntry.COLUMN_COST + "\n");
int currentId = c.getColumnIndex(DataContract.DataEntry._ID);
int projectNameId = c.getColumnIndex(DataContract.DataEntry.COLUMN_PROJECT_NAME);
int headId = c.getColumnIndex(DataContract.DataEntry.COLUMN_HEAD);
int cityId = c.getColumnIndex(DataContract.DataEntry.COLUMN_CITY);
int costId = c.getColumnIndex(DataContract.DataEntry.COLUMN_COST);
while (c.moveToNext()) {
int id = c.getInt(currentId);
String projectName = c.getString(projectNameId);
String head = c.getString(headId);
String city = c.getString(cityId);
String cost = c.getString(costId);
textView.append("-" + id
+ "---" + projectName
+ "---" + head
+ "---" + city
+ "---" + cost);
}
} finally {
c.close();
}
}
这是出现在 logcat 中的错误:
CursorWindow:无法从具有 11 行 4 列的 CursorWindow 读取第 0 行第 -1 列。03-15 10:00:58.359 6348-6348/? E/AndroidRuntime:致命异常:主进程:com.example.student.sampledatabase,PID:6348 java.lang.IllegalStateException:无法从 CursorWindow 读取第 0 行,列 -1。确保在从光标访问数据之前正确初始化光标。
解决方案
将此列 , 添加DataContract.DataEntry._ID
到您的投影中。
推荐阅读
- javascript - 即使我的 domain.com 主机记录没有“evilsub”条目,网络服务器上如何存在 http://evilsub.domain.com/linkpage.html?
- javascript - 如果 document.ready 或者如果单击元素,是否有办法触发 jquery 函数?
- python - 程序重新启动时如何永久存储用户输入列表?
- javascript - 数组未在嵌套的 firestore get 中更新
- javascript - 反应太多重新渲染
- git - 从 .git 存储库中提取图像文件
- scala - SBT:如何在 IntegrationTest 中获取所有定义?
- excel - 是否可以在 Excel 数据输入电子表格(VBA?)中不允许特定的空值?
- chart.js - ChartJS:xAxis 标签的完整日期?
- python - 如何在 python 中找到 bokeh.core.property.containers.PropertyValueColumnData 对象的第 n 个元素?