gpt4 book ai didi

android - 获取 SQLiteException 并且我不确定是什么原因造成的

转载 作者:行者123 更新时间:2023-11-29 16:22:09 25 4
gpt4 key购买 nike

我的 Android 应用因以下错误而崩溃:

E/AndroidRuntime(  315): Caused by: android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x3470a0
...
E/AndroidRuntime( 315): at lee.medical.icu.dataentry.db.PatientInfoDbHelper.getTests(PatientInfoDbHelper.java:163)

它在这段代码上绊倒了:

SQLiteDatabase db = dbHelper.getReadableDatabase();
String[] columns = {C_LOCATION, C_TESTS};
String selection = "? = '?' and ? = '?'";
String[] selectionArgs = {C_LAST, lastName, C_FIRST, firstName};
Cursor cursor = db.query(TABLE, columns, selection, selectionArgs,
null, null, null); // line 163

这个错误意味着什么?

(注意事项:C_LOCATIONC_TESTSC_LASTC_FIRST 是我数据库中的列. lastNamefirstName 是不言自明的方法参数。)

编辑:我不得不稍微尝试一下 antlersoft 的解决方案,让它发挥作用。万一遇到同样问题的其他人偶然发现了这个问题,我的解决方案是将 selection 更改为:

String selection = C_LAST + " = ? and " + C_FIRST + " = ?"

最佳答案

不要把你的?在字符串参数的单引号中;在单引号中?被视为文字字符串而不是参数占位符——SQLite 将知道作为 ?所以你不必引用它。

按照您编写它的方式,您的查询中有四个参数并且只有两个参数占位符,因此出现异常。

关于android - 获取 SQLiteException 并且我不确定是什么原因造成的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6630437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com