Я пытаюсь улучшить скорость вставки моей базы данных Android. То, что я сейчас делаю, генерирует строку типа:
SELECT ? as title, ? as musician_id, ? as album_id, ? as genre
UNION SELECT ?, ?, ?, ?
UNION SELECT ?, ?, ?, ?
UNION SELECT ?, ?, ?, ?
UNION SELECT ?, ?, ?, ?
UNION SELECT ?, ?, ?, ?
И затем выполнив его с помощью
SQLiteDatabase database = //initialized in some way
String insertQuery; // the string of the query above
String [] parameters; // the parameters to use in the insertion.
database.execSQL(insertQuery.toString(), parameters);
Я получаю следующую ошибку, когда пытаюсь вставить около 2000 строк:
Caused by: android.database.sqlite.SQLiteException: too many SQL variables (code 1): , while compiling: INSERT INTO songs (title, musician_id, album_id, genre)
SELECT ? as title, ? as musician_id, ? as album_id, ? as genre
UNION SELECT ?, ?, ?, ?
UNION SELECT ?, ?, ?, ?
Когда я пытаюсь вставить около 200 строк, все работает нормально.
Я предполагаю, что это очевидно - я пытаюсь передать слишком много переменных в одном execSQL
. Кто-нибудь знает, каков предел, чтобы я мог разбить строки, которые я вставляю в соответствующие партии?