IllegalArgumentException: значение привязки в индексе 1 равно null

Кто-нибудь знает, что это значит?

12-31 20:55:45.861: ERROR/AndroidRuntime(12478): Caused by: java.lang.IllegalArgumentException: the bind value at index 1 is null
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:234)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at android.database.sqlite.SQLiteQuery.bindString(SQLiteQuery.java:182)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:48)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:330)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:280)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at net.lp.collectionista.providers.ProductContentProvider.query(ProductContentProvider.java:350)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at android.content.ContentProvider$Transport.query(ContentProvider.java:163)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at android.content.ContentResolver.query(ContentResolver.java:245)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at net.lp.collectionista.providers.FacadeContentProvider.query(FacadeContentProvider.java:563)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at android.content.ContentProvider$Transport.query(ContentProvider.java:163)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at android.content.ContentResolver.query(ContentResolver.java:245)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at net.lp.collectionista.util.ScanAddTask.existsProduct(ScanAddTask.java:164)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at net.lp.collectionista.util.ScanAddTask.<init>(ScanAddTask.java:71)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at net.lp.collectionista.util.ItemScanAddTask.<init>(ItemScanAddTask.java:34)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at net.lp.collectionista.ui.activities.collections.cd.CDCollectionViewWindow$MusicCDItemScanAddTask.<init>(CDCollectionViewWindow.java:147)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at net.lp.collectionista.ui.activities.collections.cd.CDCollectionViewWindow.restoreLocalState(CDCollectionViewWindow.java:1044)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at net.lp.collectionista.ui.activities.collections.cd.CDCollectionViewWindow.onRestoreInstanceState(CDCollectionViewWindow.java:966)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at android.app.Activity.performRestoreInstanceState(Activity.java:815)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1096)
12-31 20:55:45.861: ERROR/AndroidRuntime(12478):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2641)

person pjv    schedule 31.12.2010    source источник
comment
Это означает, что у вас есть незаконный аргумент где-то. Предположительно, вы передаете null где-то, что не может быть нулевым.   -  person Falmarri    schedule 31.12.2010


Ответы (3)


The bind value, по-видимому, относится к selectionArgs для выбора, который вы вставляете в query(). Если такое значение selectionArgs равно null, вы получите это.

person pjv    schedule 31.12.2010
comment
Хм, я ценю, что это старый пост, но что, если вы хотите искать NULL, как я пытаюсь сделать здесь: stackoverflow.com/questions/14175233/ - person Scamparelli; 05.01.2013
comment
Моя проблема заключалась в том, что выбор был не совсем правильным. Я пропустил ?, поэтому у меня было columnName вместо columnName +"=?". - person WarrenFaith; 21.02.2013
comment
Кое-что, что я не сразу понял: selectionArgs - это массив, и если одно из значений равно null, вы получите эту ошибку. - person Jason Hartley; 28.08.2019

Ответы @Gray и @pjv были отправной точкой для понимания того, какая проблема вызвала эту ошибку. Вы должны быть осторожны с соответствием selection и selectionArgs, если вы передадите selection = null и selectionArgs = something, вы также получите эту ошибку! :) Спасибо!

person cesards    schedule 20.09.2013

Это не совсем относится к вопросу, но я столкнулся с похожей проблемой для меня argument containted a dash (-) at the beginning. Это вызывало проблему.

Так что я избежал спора, как это

return mDatabase.query(table_name,
                       null,
                       column_name + "=?",
                       new String[]{"\\" + argument},
                       null,
                       null,
                       null);

Это решило это для меня.

Вы также можете увидеть это: Как экранировать специальные символы, такие как ' в sqlite в андроиде

person DragonFire    schedule 11.07.2020