- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这是错误,它说索引超出范围,但我不知道如何解决它,有一些土耳其语单词但它们并不重要,我认为:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.burhanozen.nothesaplama, PID: 26919
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.example.burhanozen.nothesaplama/com.example.burhanozen.nothesaplama.MainActivity}: android.database.CursorIndexOutOfBoundsException: Index 1 requested, with a size of 1
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at ........
我试图存储某种学生信息。我有这些错误,我在下面分享代码。这是我的 MainActivity:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar = findViewById(R.id.toolbar) as Toolbar
setSupportActionBar(toolbar)
val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener {
val intent = Intent(this@MainActivity,NotEkrani::class.java)
startActivity(intent) }
val studentsArray = ArrayList<String>()
val arrayAdapter = ArrayAdapter(this,android.R.layout.simple_list_item_1,studentsArray)
listView.adapter= arrayAdapter
try{
val myDatabase = this.openOrCreateDatabase("student", Context.MODE_PRIVATE,null)
myDatabase.execSQL("CREATE TABLE IF NOT EXISTS students (isim TEXT," +
" dersbir TEXT, dersbirkredi TEXT, dersbirort TEXT," +
" dersiki TEXT, dersikikredi TEXT, dersikiort TEXT) ")
val cursor = myDatabase.rawQuery("select * from students",null)
val nameIx = cursor.getColumnIndex("isim")
val dersbirIx = cursor.getColumnIndex("dersbir")
val dersbirkrediIx = cursor.getColumnIndex("dersbirkredi")
val dersbirortIx = cursor.getColumnIndex("dersbirort")
val dersikiIx = cursor.getColumnIndex("dersiki")
val dersikikrediIx = cursor.getColumnIndex("dersikikredi")
val dersikiortIx = cursor.getColumnIndex("dersikiort")
cursor.moveToNext()
while (cursor != null){
studentsArray.add(cursor.getString(nameIx))
studentsArray.add(cursor.getString(dersbirIx))
studentsArray.add(cursor.getString(dersbirkrediIx))
studentsArray.add(cursor.getString(dersbirortIx))
studentsArray.add(cursor.getString(dersikiIx))
studentsArray.add(cursor.getString(dersikikrediIx))
studentsArray.add(cursor.getString(dersikiortIx))
cursor.moveToNext()
arrayAdapter.notifyDataSetChanged()
}
while (cursor!=null){
cursor!!.close()
}
}catch (e:SQLException){
}
这是我的第二个 Activity 页面,我在这里没有任何错误,但这可能会有所帮助。我在这里写了数据库代码。
fun kaydet(view:View){
val isim = isim.text.toString()
val dersbir = dersbir.text.toString()
val dersbirkredi = dersbirkredi.text.toString()
val dersbirort = dersbirort.text.toString()
val dersiki = dersiki.text.toString()
val dersikikredi = dersikikredi.text.toString()
val dersikiort = dersikiort.text.toString()
try {
val myDatabase = openOrCreateDatabase("student", Context.MODE_PRIVATE,null)
myDatabase.execSQL("CREATE TABLE IF NOT EXISTS students (isim TEXT," +
" dersbir TEXT, dersbirkredi TEXT, dersbirort TEXT," +
" dersiki TEXT, dersikikredi TEXT, dersikiort TEXT) ")
val sqlString = "INSERT INTO students (isim,dersbir,dersbirkredi,dersbirort,dersiki,dersikikredi,dersikiort) VALUES(?,?,?,?,?,?,?)"
val statement = myDatabase.compileStatement(sqlString)
statement.bindString(1,isim)
statement.bindString(2,dersbir)
statement.bindString(3,dersbirkredi)
statement.bindString(4,dersbirort)
statement.bindString(5,dersiki)
statement.bindString(6,dersikikredi)
statement.bindString(7,dersikiort)
statement.execute()
}catch (e:SQLException){
}
val intent = Intent(this,MainActivity::class.java)
startActivity(intent)
}
最佳答案
将您的 while 循环更改为如下所示:
while (cursor.moveToNext()){
studentsArray.add(cursor.getString(nameIx))
...
}
(从您的代码中删除所有其他 cursor.moveToNext()
)
您正在 while 循环条件中检查 cursor != null
,但在您从游标读取所有行后它不会变为 null。
在上面的代码中,如果有下一行,cursor.moveToNext
返回 true。否则返回 false 并且循环终止。
而且,刚刚注意到,您应该将其更改为
while (cursor!=null){
cursor!!.close()
}
如果检查:
if (cursor!=null){
cursor.close()
}
或者,作为 Todd评论中建议,您可以使用自动关闭游标的高阶函数use
,这类似于 Java 7 try-with-resources。
cursor.use {
while (cursor.moveToNext()){
studentsArray.add(cursor.getString(nameIx))
...
}
}
关于java - Kotlin 数据库错误 CursorIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45784788/
我想使用 List 和 Cursor 将两个值放入 SQLite 数据库中的一个微调器行中,这是我的代码: 将数据放入列表: public List getAllLabelsServer(){
我正在使用以下查询查询数据库: final Cursor subject_cursor = db.rawQuery("SELECT * FROM " + DB.Table.SUBJECT +
我正在尝试检索sqlite数据库的数据。并将其放在字符串上以进一步显示,但我收到此错误,请帮助我解决该错误! 这是显示错误的 logcat 数据 12-31 13:18:55.141: E/1
我正在尝试加载联系人信息并使用 ListView 显示它。但是我得到了一个错误。 我的代码: public class Sync extends ListActivity implements OnC
现在我正在使用 sqllite 存储所有 json 值的 json 应用程序。值存储正确,我正在为 sqllite 获取数据,发生以下错误请帮助我... 12-09 13:51:22.808: ERR
这是我遇到的错误: 07-20 11:04:45.564: E/AndroidRuntime(1905): java.lang.RuntimeException: Unable to start ac
这是我的 LogCat 日志: 08-25 22:35:27.989: ERROR/AndroidRuntime(327): Caused by: android.database.CursorInd
我在使用 Cursors 对 Android 数据库执行 SQLite 查询时遇到问题,如果我尝试使用 getPage,我会得到一个 android.database.CursorIndexOutOf
亲爱的stackoverflowers, 我的 android 应用程序中有一个数据库,我向它发送一个字符串并返回一个游标。这是代码: public Cursor listSearch(String
由于 Android 数据库错误,我的光标导致应用程序崩溃。 CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
我使用 android studio 在 android 中尝试了一个简单的注册应用程序。我正在尝试制作一个简单的数据库并在其中插入值。我在调试我的应用程序时收到以下无法理解的错误。 FATAL EX
这是错误,它说索引超出范围,但我不知道如何解决它,有一些土耳其语单词但它们并不重要,我认为: E/AndroidRuntime: FATAL EXCEPTION: main Process: com.
所以我一直在尝试在我的 sqlite 数据库中查询我的 Android 应用程序。然而,我的光标似乎也没有像预期的那样工作,因为我可以获得任何结果。 我知道我的数据库中只有 3 个项目,但我在查询中输
这是我的 SqlLite 查询代码,我在其中定义一个方法来从类别中获取颜色类别并将其作为字符串返回给该方法 public String getCategoryColor(String task) {
我刚刚收到使用我的 Android 应用程序的用户的错误报告。 java.lang.RuntimeException: Unable to start activity ComponentInfo{c
我正在尝试在我正在构建的应用程序中分享视频(到社交媒体)。我正在使用需要 Uri 来解析的 Intent 。我试图在一个简单的文件管理器(列表 Activity )上选择项目,然后长按共享它们。因此,
这是我的代码: Log.d("MYTAG", "random number -->" + randomNumber); idRandomCards[i] = cursorTypeZero.getI
我在我的 sqlite 数据库中使用一个配置表。这具有以下组成: private static final String DATABASE_CONFIG_CREATE = "CREATE TA
我一直在努力使用我的一个表字段查询我的 SQLite 数据库。我使用 ForeignId 字段成功查询,但没有使用我的表 QuizTable 的 Available 字段。我希望你能指出我错过的事情。
所以,我的应用程序的用户崩溃报告中有这个错误。这是报告: android.database.CursorIndexOutOfBoundsException: Index 0 requested, wi
我是一名优秀的程序员,十分优秀!