Так что у меня есть проблема с запросом обновлений внутри @Query, который пытается обновить столбец, который содержит String []. < /p>
преобразователи: < /p>
@TypeConverter
public static String[] fromString(String value) {
Type listType = new TypeToken() {
}.getType();
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String fromArrayList(String[] list) {
//Type listType = new TypeToken() {
//}.getType();
Gson gson = new Gson();
String json = gson.toJson(list);
return json;
}
< /code>
dao: < /p>
@Dao
public interface CharacterDao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
long[] insertCharacters(Character... characters);
@Query("UPDATE characters SET name = :name, episodes = :episodes, createdDate = :createdDate " +
"WHERE character_id = :character_id")
void updateCharacter(String character_id, String name, String[] episodes, String createdDate);
}
Итак, чтобы объяснить это глубже, что я делаю сейчас, пытается сделать в моем репозитории. (Так был конфликт). Также я добавил @typeconverters для всей базы данных, Altout я попытался добавить ее в DAO, сущности и т. Д., Но это не решает проблему. < /p>
Таким образом, проблема появляется при вызове символов. Когда я удаляю массив эпизодов из вызова метода и @Query, он работает отлично, поэтому строка [] является проблемой здесь. < /P>
Однако, когда я использую @Update вместо пользовательского @Query это работает просто отлично. Но это все еще беспокоит меня, и нигде нет ответа. Проблема заключается только в обновлении < /p>
Ошибка, которую я получаю, «синтаксис? Ошибка» < /p>
trace: < / p>
--------- beginning of crash
2019-05-15 14:29:23.556 20853-21022/pl.com.bubka.characs E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1
Process: pl.com.bubka.characs, PID: 20853
android.database.sqlite.SQLiteException: near "?": syntax error (Sqlite code 1 SQLITE_ERROR): , while compiling: UPDATE characters SET name = ?, episodes = ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, createdDate = ? WHERE character_id = ?, (OS error - 0:Success)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:948)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:559)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:603)
at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:63)
at android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1166)
at androidx.sqlite.db.framework.FrameworkSQLiteDatabase.compileStatement(FrameworkSQLiteDatabase.java:64)
at androidx.room.RoomDatabase.compileStatement(RoomDatabase.java:249)
at pl.com.bubka.characs.database.CharacterDao_Impl.updateCharacter(CharacterDao_Impl.java:465)
at pl.com.bubka.characs.repositories.CharactersRepository$1.saveCallResult(CharactersRepository.java:50)
at pl.com.bubka.characs.repositories.CharactersRepository$1.saveCallResult(CharactersRepository.java:39)
at pl.com.bubka.characs.utils.NetworkBoundResources$3$1.run(NetworkBoundResources.java:69)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
Подробнее здесь: https://stackoverflow.com/questions/561 ... ite-syntax
Android Room Custom Update @Query с сбоем массива строк с "SQLite Syntax? Ошибка" ⇐ Android
Форум для тех, кто программирует под Android
1739341737
Anonymous
Так что у меня есть проблема с запросом обновлений внутри @Query, который пытается обновить столбец, который содержит String []. < /p>
преобразователи: < /p>
@TypeConverter
public static String[] fromString(String value) {
Type listType = new TypeToken() {
}.getType();
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String fromArrayList(String[] list) {
//Type listType = new TypeToken() {
//}.getType();
Gson gson = new Gson();
String json = gson.toJson(list);
return json;
}
< /code>
dao: < /p>
@Dao
public interface CharacterDao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
long[] insertCharacters(Character... characters);
@Query("UPDATE characters SET name = :name, episodes = :episodes, createdDate = :createdDate " +
"WHERE character_id = :character_id")
void updateCharacter(String character_id, String name, String[] episodes, String createdDate);
}
Итак, чтобы объяснить это глубже, что я делаю сейчас, пытается сделать в моем репозитории. (Так был конфликт). Также я добавил @typeconverters для всей базы данных, Altout я попытался добавить ее в DAO, сущности и т. Д., Но это не решает проблему. < /p>
Таким образом, проблема появляется при вызове символов. Когда я удаляю массив эпизодов из вызова метода и @Query, он работает отлично, поэтому строка [] является проблемой здесь. < /P>
Однако, когда я использую @Update вместо пользовательского @Query это работает просто отлично. Но это все еще беспокоит меня, и нигде нет ответа. Проблема заключается только в обновлении < /p>
Ошибка, которую я получаю, «синтаксис? Ошибка» < /p>
trace: < / p>
--------- beginning of crash
2019-05-15 14:29:23.556 20853-21022/pl.com.bubka.characs E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1
Process: pl.com.bubka.characs, PID: 20853
android.database.sqlite.SQLiteException: near "?": syntax error (Sqlite code 1 SQLITE_ERROR): , while compiling: UPDATE characters SET name = ?, episodes = ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, createdDate = ? WHERE character_id = ?, (OS error - 0:Success)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:948)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:559)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:603)
at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:63)
at android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1166)
at androidx.sqlite.db.framework.FrameworkSQLiteDatabase.compileStatement(FrameworkSQLiteDatabase.java:64)
at androidx.room.RoomDatabase.compileStatement(RoomDatabase.java:249)
at pl.com.bubka.characs.database.CharacterDao_Impl.updateCharacter(CharacterDao_Impl.java:465)
at pl.com.bubka.characs.repositories.CharactersRepository$1.saveCallResult(CharactersRepository.java:50)
at pl.com.bubka.characs.repositories.CharactersRepository$1.saveCallResult(CharactersRepository.java:39)
at pl.com.bubka.characs.utils.NetworkBoundResources$3$1.run(NetworkBoundResources.java:69)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
Подробнее здесь: [url]https://stackoverflow.com/questions/56148141/android-room-custom-update-query-with-string-array-crash-with-sqlite-syntax[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия