SQLite обновить все строки таблицы программно
От: 00011011  
Дата: 24.10.22 19:47
Оценка:
Есть таблицы, в которых хранятся зашифрованные строки. Хочется пройтись по каждой таблице, расшифровать каждую строку и заменить зашифорванное значение на расшифрованное. Понятно что одним запросом это не сделаешь, нужно написать цикл, перебрать все значения, расшифровать их и положить обратно. Желательно прямо в том же цикле.
Но возможно ли это? Если есть SQLiteDataReader, который обеспечивает цикл чтения, то можно ли прямо там внутри вызывать еще запросы? Позволит ли System.Data.SQLite такое, не будет ли таблица заблокирована для записи?
Если можно, то есть ли удобный способ обращаться к текущей строке?
Да, можно добавить в запрос id: select id, text1, text2, text2 from tabl, далее на каждой итерации цикла делать update по этому id, но не у всех таблиц есть уникальный id.

UPD. выяснил что у каждой строки есть скрытое поле rowid, которое является уникальным идентификатором строки. Осталось выяснить будут ли работать запросы внутри цикла SQLiteDataReader. Или придется сначала генерировать массив/список, а затем еще раз в цикле по нему — обновлять...
Отредактировано 24.10.2022 19:54 00011011 . Предыдущая версия .
Re: SQLite обновить все строки таблицы программно
От: Baiker  
Дата: 24.10.22 20:03
Оценка: 10 (2) +1
Здравствуйте, 00011011, Вы писали:

0>Есть таблицы, в которых хранятся зашифрованные строки. Хочется пройтись по каждой таблице, расшифровать каждую строку и заменить зашифорванное значение на расшифрованное

0>но не у всех таблиц есть уникальный id.

Как вариант, расшифрованное тупо вставлять в ДРУГУЮ таблицу! Person => Person2 Старую удалить, новую переименовать.
Re: SQLite обновить все строки таблицы программно
От: Sinclair Россия https://github.com/evilguest/
Дата: 25.10.22 03:38
Оценка: 22 (4) +1
Здравствуйте, 00011011, Вы писали:

0>Есть таблицы, в которых хранятся зашифрованные строки. Хочется пройтись по каждой таблице, расшифровать каждую строку и заменить зашифорванное значение на расшифрованное. Понятно что одним запросом это не сделаешь

Почему не сделаешь?
Что мешает зарегистрировать функцию decrypt(), и сделать
update table1 set data = decrypt(data)

?

https://www.youtube.com/watch?v=Ydy92CJh2gY
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Отредактировано 25.10.2022 3:45 Sinclair . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.