Size: a a a

Kotlin Community

2020 June 25

AM

Andrew Mikhaylov in Kotlin Community
Saved Messages
Можете помочь?
Пытаюсь записать инфу с БД в объект но вылетает такое
Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.

вот код
fun readRouteData(bus : BusDB) : MutableList<RouteDB>{
       var list : MutableList<RouteDB> = ArrayList()
       val db = this.readableDatabase
       val query = "Select * from " + TABLE_ROUTE + " WHERE " + COL_ROUTE_BUSID + " = " +  bus.id
       val result = db.rawQuery(query,null)
       println(result)
       if(result.moveToFirst()){
           do {
               var route = RouteDB()
               route.id = result.getInt(result.getColumnIndex(COL_ROUTE_ID))
               route.stationName = result.getString(result.getColumnIndex(COL_ROUTE_STATIONNAME))
               route.stopTime = result.getString(result.getColumnIndex(COL_ROUTE_STOPTIME))
               route.stationId = result.getInt(result.getColumnIndex(COL_ROUTE_STATIONID))
               route.busId = result.getInt(result.getColumnIndex(COL_ROUTE_BUSID))
               list.add(route)
           }while (result.moveToNext())
       }
       result.close()
       db.close()
       return list
   }
1. Ваш вопрос не о котлине. Пишите в профильный чат -- @android_ru.
2. Проверьте, на какой строке конкретно ошибка; в этой строке будет видно, какая именно колонка не нашлась.
3. Проверьте ваш DDL-запрос (тот, который CREATE TABLE), возможно, вы там найдёте пропущенную колонку.
4. Перестаньте клеить SQL-запросв руками, и совершенно точно перестаньте туда вклеивать значения в WHERE clause -- SQLite, в том числе на ведре, умеет в placeholders.
5. Пишите в профильный чат -- @android_ru.
источник

QH

Quantum Harmonizer in Kotlin Community
А не подскажешь, можно ли там логгировать поведение роутера?
источник

RI

Ruslan Ibragimov in Kotlin Community
Quantum Harmonizer
А не подскажешь, можно ли там логгировать поведение роутера?
Прямо сейчас в dev списке рассылки обсуждается эта фича
источник

QH

Quantum Harmonizer in Kotlin Community
Ruslan Ibragimov
Прямо сейчас в dev списке рассылки обсуждается эта фича
мдя. Сунуть query parameters в template нельзя; поставить два обработчика с разными предикатами на один template тоже нельзя.
UPD: а мб я рукожоп, пока вижу что-то странное
UPD2: зависит от наличия слэша в начале пути. Пипец
источник

RI

Ruslan Ibragimov in Kotlin Community
Quantum Harmonizer
мдя. Сунуть query parameters в template нельзя; поставить два обработчика с разными предикатами на один template тоже нельзя.
UPD: а мб я рукожоп, пока вижу что-то странное
UPD2: зависит от наличия слэша в начале пути. Пипец
Покажи что примерно получилось, ради интереса
источник

QH

Quantum Harmonizer in Kotlin Community
Ruslan Ibragimov
Покажи что примерно получилось, ради интереса
RoutingHandler(false)
   .add("GET", "blah", { false }) { … }
   .add("GET", "blah", { false }) { … }
   .add("GET", "blah", { true }) { … }
источник

RI

Ruslan Ibragimov in Kotlin Community
Никогда не указывал query params в routing handler.

Но в целом да, так и делаю. Предикаты в итоге я не использовал практически, хотя там можно накрутить много чего. Вместо этого делаю логику в хендлере.
источник

QH

Quantum Harmonizer in Kotlin Community
Ruslan Ibragimov
Никогда не указывал query params в routing handler.

Но в целом да, так и делаю. Предикаты в итоге я не использовал практически, хотя там можно накрутить много чего. Вместо этого делаю логику в хендлере.
я пытаюсь скопировать один довольно уродливый API
источник

RI

Ruslan Ibragimov in Kotlin Community
Quantum Harmonizer
я пытаюсь скопировать один довольно уродливый API
Просто query params и так все доступны в exchange, большого смысла их указывать тут не вижу. Всегда можно сделать специальный handler, который будет читать в dto query params:


.add("GET", "blah", { false }, QueryParamsHandler(Type::class, ActualHandler()))
источник

QH

Quantum Harmonizer in Kotlin Community
Ruslan Ibragimov
Просто query params и так все доступны в exchange, большого смысла их указывать тут не вижу. Всегда можно сделать специальный handler, который будет читать в dto query params:


.add("GET", "blah", { false }, QueryParamsHandler(Type::class, ActualHandler()))
я обрабатываю общий случай, когда шаблон приходит извне
источник

QH

Quantum Harmonizer in Kotlin Community
🤔 а есть менее странный способ ответить джейсоном, чем писнуть джейсон в ByteArrayOutputStream и врапнуть его в ByteBuffer?
источник

RI

Ruslan Ibragimov in Kotlin Community
Зачем этим заниматься
источник

QH

Quantum Harmonizer in Kotlin Community
Ruslan Ibragimov
Зачем этим заниматься
зачем отвечать джейсоном?)
источник

QH

Quantum Harmonizer in Kotlin Community
я для разнообразия решил попробовать Moshi, а оно написано поверх Okio, которое про ByteBuffer не знает 😐
источник

RI

Ruslan Ibragimov in Kotlin Community
Quantum Harmonizer
зачем отвечать джейсоном?)
Зачем возиться с outputstream, он блокирующий же. Если много данных то надо смотреть как это правильно делать (я из много данных только файлы отправлял, а json у меня всегда был лимитирован тем что без проблем помещается в память), а если не много то просто string, не?
источник

QH

Quantum Harmonizer in Kotlin Community
Ruslan Ibragimov
Зачем возиться с outputstream, он блокирующий же. Если много данных то надо смотреть как это правильно делать (я из много данных только файлы отправлял, а json у меня всегда был лимитирован тем что без проблем помещается в память), а если не много то просто string, не?
оно-то помещается, просто приседаний и копирований вокруг него много.
источник

RI

Ruslan Ibragimov in Kotlin Community
Quantum Harmonizer
оно-то помещается, просто приседаний и копирований вокруг него много.
Хм, типо не ByteArrayOS -> ByteArray -> ByteBuffer.wrap?
источник

QH

Quantum Harmonizer in Kotlin Community
Ruslan Ibragimov
Хм, типо не ByteArrayOS -> ByteArray -> ByteBuffer.wrap?
вот у меня сейчас так, и оно мне не нравится
источник

RI

Ruslan Ibragimov in Kotlin Community
Так тут копирование же
источник

RI

Ruslan Ibragimov in Kotlin Community
ByteArray создается. А значит разницы с просто string практически нет
источник