Это структура и данные моей таблицы funco
внутри базы данных your.db
(SQLite):
Id Disp Tp
1 Ball 2
2 Light 1
3 Sea 4
Это мой код:
var db = SQLiteDatabase.openDatabase(this.filesDir.path +
"/your.db",null, SQLiteDatabase.OPEN_READWRITE)
val c = db.rawQuery("Select Id, Disp, Tp From Funco Where Id<=2;",null)
var stat = c.moveToFirst()
var result=""
while (stat) {
val mId = c.getInt(c.getColumnIndex("Id"))
val mDisp = c.getString(c.getColumnIndex("Disp"))
val mTp = c.getInt(c.getColumnIndex("Tp"))
result += "$mId $mDisp $mTp | "
stat = c.moveToNext()
}
c.close()
db.close()
result
значение:
1 Ball 2 | 2 Light 1 |
Если я заменю вторую строку на
val c = db.rawQuery("Select ?, ?, ? From Funco Where ?<=2;"
,arrayOf("Id","Disp","Tp","Id"))
Ошибка не возникла, но курсор пуст!
Почему?
Обновление:
Ответ @ tynn правильный.Я думаю, что документация неуловима.Я думаю, что компилятор должен выдавать ошибку, а не просто возвращать пустой курсор.
В том же духе можно написать
val c = db.query("funco",arrayOf("Id","Disp","Tp"),"Id<=?",
arrayOf("2"),null,null,null)
Но приведенный ниже код не работает
val c = db.query("funco",arrayOf("Id","Disp","Tp"),"?<=?",
arrayOf("id","2"),null,null,null)