Как предоставить пароль для sqlite3.exe? - PullRequest
2 голосов
/ 11 июля 2011

У меня есть база данных sqlite, которую я хочу открыть с помощью sqlite3.exe. Теперь я получаю сообщение об ошибке, когда пытаюсь сделать запрос: «Файл зашифрован или не является базой данных». Это может показаться глупым, но я искал в Интернете, и я просто не могу найти, как предоставить пароль (или ключ) для sqlite3.exe для расшифровки базы данных. Опция -help или команда .help в sqlite3.exe ничего не показывают для этого ... Возможно ли это сделать, и если да, то как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 11 июля 2011

Маловероятно, что база данных будет зашифрована, если у вас нет оснований полагать, что это так.Вы вообще можете открыть базу данных или получаете эту ошибку, как только вы выполняете какой-либо запрос SQL?Если это первый, ваш файл, вероятно, либо не является базой данных sqlite, либо он поврежден;если это последнее, пожалуйста, проверьте целостность вашей базы данных:

pragma integrity_check;

См. http://www.sqlite.org/pragma.html#pragma_integrity_check для получения дополнительной информации об этой прагме.действительно зашифрован (что sqlite изначально не поддерживает), ваша БД, вероятно, непригодна для использования.

0 голосов
/ 11 июля 2011

Оформить заказ на этом форуме здесь .У парня был такой же вопрос, как и у вас.Дело в том, что в API sqlite3 нет какой-либо формы защиты, предлагаемой в качестве стандартного пакета, но вы можете попробовать System.Data.SQLite .Вот коды, размещенные на форуме:

#include <SQLite.au3>    don't include sqlite.dll.au3 !!!

_SQLite_Startup ("System.Data.SQLite.dll")
ConsoleWrite(_SQLite_LibVersion() & @LF)
_SQLite_Open("testcrypt.db")
_SQLite_Exec(-1, "pragma key = 'Radu is happy!';create table if not exists test (id integer, val text);" & _
                "insert into test values (1, 'abc');")
Local $row
_SQLite_QuerySingleRow(-1, "select * from test;", $row)
ConsoleWrite($row[1] & @LF)
_SQLite_Close()
_SQLite_Shutdown()

надеюсь, что поможет.

0 голосов
/ 11 июля 2011

SQLite сообщает об этой ошибке, когда вы передаете ему файл, который на самом деле не является базой данных SQLite или, наоборот, поврежден.Существует несколько дополнений SQLite для поддержки шифрования, но кроме этого SQLite не имеет шифрования.

Это также может произойти, когда вы пытаетесь открыть базу данных SQLite v3 с SQLite v2 (и, возможно, для других несовпадений версий).

Предполагая, что вы столкнулись с повреждением (и не просто передали неправильный файл или использовали неправильную версию SQLite), вы можете проверить используемые вами настройки PRAGMA synchronous, а также просмотреть * 1006.* список исправленных ошибок, приводящих к повреждению данных .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...