Unmanaged C ++中的System.Data.SQLite

问题描述 投票:0回答:2

我想将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宠坏了我!

谢谢,迈克

sqlite system.data.sqlite
2个回答
1
投票

您不能从非托管代码中使用托管DLL,因为它们是不同的系统。只需使用普通的非托管SQLite构建并阅读有关如何使用密钥的文档即可。


1
投票

最近,我遇到了类似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

© www.soinside.com 2019 - 2024. All rights reserved.