Есть таблицы, в которых хранятся зашифрованные строки. Хочется пройтись по каждой таблице, расшифровать каждую строку и заменить зашифорванное значение на расшифрованное. Понятно что одним запросом это не сделаешь, нужно написать цикл, перебрать все значения, расшифровать их и положить обратно. Желательно прямо в том же цикле.
Но возможно ли это? Если есть SQLiteDataReader, который обеспечивает цикл чтения, то можно ли прямо там внутри вызывать еще запросы? Позволит ли System.Data.SQLite такое, не будет ли таблица заблокирована для записи?
Если можно, то есть ли удобный способ обращаться к текущей строке?
Да, можно добавить в запрос id: select id, text1, text2, text2 from tabl, далее на каждой итерации цикла делать update по этому id, но не у всех таблиц есть уникальный id.
UPD. выяснил что у каждой строки есть скрытое поле rowid, которое является уникальным идентификатором строки. Осталось выяснить будут ли работать запросы внутри цикла SQLiteDataReader. Или придется сначала генерировать массив/список, а затем еще раз в цикле по нему — обновлять...
Здравствуйте, 00011011, Вы писали:
0>Есть таблицы, в которых хранятся зашифрованные строки. Хочется пройтись по каждой таблице, расшифровать каждую строку и заменить зашифорванное значение на расшифрованное
0>но не у всех таблиц есть уникальный id.
Как вариант, расшифрованное тупо вставлять в ДРУГУЮ таблицу! Person => Person2
Старую удалить, новую переименовать.
Здравствуйте, 00011011, Вы писали:
0>Есть таблицы, в которых хранятся зашифрованные строки. Хочется пройтись по каждой таблице, расшифровать каждую строку и заменить зашифорванное значение на расшифрованное. Понятно что одним запросом это не сделаешь
Почему не сделаешь?
Что мешает зарегистрировать
функцию decrypt(), и сделать
update table1 set data = decrypt(data)
?
https://www.youtube.com/watch?v=Ydy92CJh2gY