无需安装即可访问 C++ 数据库

Posted

技术标签:

【中文标题】无需安装即可访问 C++ 数据库【英文标题】:C++ Database Access With No Required Installation 【发布时间】:2011-06-04 18:39:38 【问题描述】:

我正在寻找一个无需安装数据库服务器就可以运行 SQL 语句的数据库。 IE。我需要能够选择/插入/更新仅给定数据库文件和任何外部库的数据库。

这是我的情况:

我正在使用 C++ 解析许多格式奇特的二进制文件, 我想将它们存储到某种类型的数据库中以提供更多 方便地访问数据。 文件插入数据库后,我将使用 C# 编写一个界面/GUI,用户可以通过它与数据库进行交互。 我使用 C++ 来加快读取文件的速度,因为 这部分我已经写过了。 我使用 C# 是因为它更容易进行 GUI 编程。

这是我的要求:

    数据库必须提供一种仅使用外部库(无需安装)在 C++ 中运行命令的方法 我应该能够将数据库移动到任何(类似 [Windows])计算机上并运行我的应用程序

我相信这对于使用 ADO 或 JET 或类似工具的 MS Access *.mdb 文件是可能的,但是,我想听听一些替代方案。请在您的答案中提供数据库和 C++ 引擎/库。

我的优先事项是:

    “精简版” 性能(插入/选择速度) 客户端代码简单(即设置的容易程度)

谢谢大家。

【问题讨论】:

我首先想到的是MS Access。这是一个非常强大的工具。我的主要反对意见是它对于一些白痴“超级用户”来说太强大了。很容易得到意想不到的结果,而且很难通过多层查询进行跟踪。但是,如果您知道自己在做什么,那么,为什么不呢?如果您发现需要更多马力,您可以随时迁移到其他地方。 @DOK:谢谢。 Access 的一个优点是 Office 安装在多台计算机上,这将非常方便。此外,在我看来,与 Microsoft 产品保持一致是一个加分项。我还研究了 SQL Server CE,但我对 C++ 资源不满意。前段时间我实际上将 Access 用于 C# 项目,它适用于我的目的,但我发现它有点缺乏功能。 【参考方案1】:

您需要查看SQLite。它非常适合这种情况并且非常易于使用。它非常流行(大型社区)、紧凑、跨平台且易于使用。

还有其他语言的 SQLite 实现。例如,您还可以使用 C# 访问 SQLite 数据库。甚至还有一个 Linq-to-SQLite。

【讨论】:

+1,完全同意。然而,OP 应该知道 SQLite 在性能上并不是那么好(这是一个列出的优先级)。 是的。但是性能可能无法衡量。这一切都取决于记录的大小、数据库的大小、关系的复杂性等。我建议先试试看它是否适用于数据。 如果他决定使用 SQLite,他将需要从 C# 访问。上一个问题涵盖了这方面:***.com/questions/93654/… 感谢您提供的信息。我喜欢 Linq,所以 Linq-to-SQLite 是个好消息。不幸的是,我只能选择一个答案,所以 Dirk 得到了复选标记,因为他首先发布(大约 2 分钟):) @Chris:我会记住你的评论。我要试一试 SQLite,看看它是否适合我。谢谢! @Jerry:我有点假设几乎所有可能出现的数据库都会有一个不错的 C# 包装器,但你已经为我节省了搜索。感谢您的链接!【参考方案2】:

SQLite 在这里不会出错。

它足够小,可以嵌入到许多应用程序中(请参阅 here 以获取著名应用程序列表,从 Photoshop 到 Apple Mail + Safari、Dropbox、Firefox、Chrome、Skype 等),但足以涵盖您可能需要的大多数 SQL 方面。在 API 和语言方面的支持也很强大。

它可能存在锁定和多次写入访问的问题。但是对于单个客户端,它应该可以正常工作。

【讨论】:

有趣的链接。我不知道 SQLite 如此受欢迎。肯定会试一试。谢谢!

以上是关于无需安装即可访问 C++ 数据库的主要内容,如果未能解决你的问题,请参考以下文章

Android ADB无需root即可访问应用数据库

无需解压缩即可访问压缩文件?

没有当前用户 AWS Amplify 身份验证错误 - 无需登录即可访问

iOS 和 Android 无需连接即可访问的蓝牙设备是不是有唯一标识符?

ChatGPT 国内无需注册 openai 即可访问 ChatGPT:ChatGPT Sidebar 浏览器扩展程序的安装与使用

微软发布VSBT,无需安装Visual Studio即可实现项目编译