public List<SGenerateModel> getGeneratedData(String seller_cnic){
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT " + TABLE_COL2 + ", " + TABLE_COL3 + " FROM " + TABLE_NAME + " WHERE " + TABLE_COL4 + " =?" ;
Cursor cursor = db.rawQuery(query, new String[]{"" + seller_cnic});
List<SGenerateModel> listOfSGModel = new ArrayList<>();
while(cursor.moveToNext()){
SGenerateModel sGenerateModel = new SGenerateModel(cursor.getString(1), cursor.getString(2));
sGenerateModel.setId(cursor.getInt(cursor.getColumnIndex(DatabaseHelper.TABLE_COL1)));
listOfSGModel.add(sGenerateModel);
}
return listOfSGModel;
}
public void generate(){
if (etSname != null)
selName = (!etSname.getText().toString().equals("")?
etSname.getText().toString() : "NULL");
if (etSphone != null)
selPhone = (!etSphone.getText().toString().equals("")?
etSphone.getText().toString() : "NULL");
if (etScnic != null)
selCnic = (!etScnic.getText().toString().equals("")?
etScnic.getText().toString() : "NULL");
sGenerateModelList = databaseHelper.getGeneratedData(selCnic);
for (SGenerateModel sGenerateModel : sGenerateModelList){
selName = sGenerateModel.getSellerName() ;
etSname.setText(selName);
selPhone = sGenerateModel.getSellerMobile();
etSphone.setText(selPhone);
}
}
TextWatcher代码:
TextWatcher textWatcher2 = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
generate();
}
};
etSname.addTextChangedListener(textWatcher2);
etSphone.addTextChangedListener(textWatcher2);
etScnic.addTextChangedListener(textWatcher2);
LogCat错误:
java.lang.IllegalStateException: Couldn't read row 0, col 2 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.database.CursorWindow.nativeGetString(Native Method)
at android.database.CursorWindow.getString(CursorWindow.java:438)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
at com.example.cattleapp.helpers.DatabaseHelper.getGeneratedData(DatabaseHelper.java:218)
at com.example.cattleapp.activities.MainActivity.generate(MainActivity.java:536)
at com.example.cattleapp.activities.MainActivity$7.afterTextChanged(MainActivity.java:241)
at android.widget.TextView.sendAfterTextChanged(TextView.java:9485)
at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:12080)
at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:1262)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:574)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:507)
at com.santalu.maskedittext.MaskTextWatcher.format(MaskTextWatcher.kt:67)
at com.santalu.maskedittext.MaskTextWatcher.afterTextChanged(MaskTextWatcher.kt:21)
at android.widget.TextView.sendAfterTextChanged(TextView.java:9485)
String query = "SELECT " + TABLE_COL2 + ", " + TABLE_COL3 + " FROM " + TABLE_NAME + " WHERE " + TABLE_COL4 + " =?" ;
在这一行中,您只获取2列(索引0和1),但是在获取时,您试图获取第2列。即。
cursor.getString(2)
只能获得列0和1。
试试这个:
SGenerateModel sGenerateModel = new SGenerateModel(cursor.getString(0), cursor.getString(1));
cursor.close();
日志猫 由:java.lang.IllegalStateException引起:无法从CursorWindow读取第0行,第5行。在从中访问数据之前,请确保光标已正确初始化。在Android.database.cursorwindow.nativegetString(本机方法)在Android.database.cursorwindow.getString(cursorwindow.java:46
这就是问题所在,我找不到错误在哪里,因为stacktrace不指向我的项目的类,而是指向android原生的类。我尝试在代码的每个部分都放断点,但是当我单击子代码时,没有一个断点被访问。 顺便说一下,我使用ViewHolder模式来处理视图,适配器是一个CursorTreeAdapter 下面是我的代码--完整的stacktrace在最后:
我看过其他问题,但没有一个答案能满足我的需要。当我点击主活动的回收器视图时,它应该把我带到学生活动,但它没有把我带到学生活动,而是给我显示了这个错误。APK也是构建的,但是在使用应用程序时,错误出现了。 谁能帮我解决这个问题吗?
问题内容: 我已经将游标初始化如下: 游标本身在同一活动中的单独方法中使用: 它给了我以下错误: 每次我重新运行应用程序时,堆栈跟踪都指向此行。那里总是会给出一个错误。 该数据库是这样的: 我在SO上阅读了几篇类似的文章,但它们并没有使我知道出了什么问题。任何输入表示赞赏。 问题答案: 游标的列索引从零开始,因此请更改: 到
我已经创建了一个非常简单的数据库android应用程序。它接受输入并显示结果。添加按钮用于添加输入,删除按钮用于删除存储在SQLite数据库中的输入。我在Android SQLite中的光标指向正确,但仍然面临错误:由:java.lang.IllegalStateException引起:无法从CursorWindow读取第0,col-1行。在从中访问数据之前,请确保光标已正确初始化。以下是游标部分
我尝试使用上下文菜单从listview中删除数据,得到了java.lang.IllegalStateException:Could not read row 0,col 2 from CursorWindow。在从游标访问数据之前,请确保游标已正确初始化。 第一行错误AssignmentRecord.SetAssid(Cursor.GetString(2)); 第二个错误是List records