我想将SQLite用作我的C ++项目的数据库。我还需要使用密码保护数据库的功能。我从SQLite.org获得了标准的SQLite,但是我需要对数据库进行密码/加密,而他们却没有这样做-他们只是在接口上加了
SQLITE_API int sqlite3_key( sqlite3 *db, const void *pKey, int nKey);
[在研究了如何执行此操作之后,我遇到了System.Data.SQLite。它声称可以很轻松地完成我需要做的所有事情,但是我需要在Visual Studio 2008中的非托管C ++项目中进行操作。我尝试了他们的项目-但我无法让非托管C ++项目允许DLL正常工作-它绕dll不够安全/ clr:safe编译-我无法在System.Data.SQLite项目中进行设置并进行编译。
任何人都可以帮我解决这个问题,或者为我提供有关如何执行此操作的良好资源?我一直沉迷于一个C ++项目(自大学(97-98年以来就没有接触过C / C ++),所以当涉及到链接器/库/模块时,我真的为此感到挣扎。Java和.NET宠坏了我!
谢谢,迈克
您不能从非托管代码中使用托管DLL,因为它们是不同的系统。只需使用普通的非托管SQLite构建并阅读有关如何使用密钥的文档即可。
最近,我遇到了类似Mike的问题,并已解决。如果有人需要,我想在这里发布我的解决方案。
我有两个程序:
一个在C#中,可以使用System.Data.SQLite
创建加密的sqlite数据库文件。
另一个在C ++中,用于读取C#程序创建的文件。
[无结果搜索之后,我查看了System.Data.SQLite的源代码,以弄清楚System.Data.SQLite
如何加密数据库文件。我认识到System.Data.SQLite
使用SQLite.Interop.dll
包裹本机sqlite和其他功能,例如加密。因此,我使用该本地源代码来构建静态库。然后,我使用该库读取加密的数据库文件。
您可以在以下链接中找到源代码:https://github.com/OpenDataSpace/System.Data.SQLite/tree/master/SQLite.Interop/src
更新2020/04/11您可以在以下链接中找到分步指南:https://wordpress.com/post/nguyenduyanhsite.wordpress.com/71