【问题标题】:Imitate database in C用C模仿数据库
【发布时间】:2010-04-07 23:40:36
【问题描述】:

我是 C 的新手。(我对 C# [Visual Studio] 和 Java [Eclipse] 有很好的了解)我想制作一个存储信息的程序。我的第一直觉是使用像 SQL Server 这样的数据库。但我不认为它与 C 兼容。所以现在我有两个选择:

  • 创建一个包含数据类型的结构(也是 typedef)。
  • 想办法通过C头文件集成SQLite

你认为哪个选项最好?或者你有别的选择吗?我有点倾向于用 typedef 创建一个结构,但可能会改变我的想法。

【问题讨论】:

  • 您可以从 C 访问任何 ODBC 兼容的数据库(尽管使用原始 ODBC 有点痛苦)。大多数数据库还支持从 C 直接访问——您几乎可以选择。
  • sql-lite 有一个不错的简单 C API;并且是零部署选择 - 即无需安装服务器

标签: c database sqlite struct


【解决方案1】:

ODBC is a C library 并允许以类似于 JDBC 的模式访问数据库。 Microsoft 有一个用于 SQLServer 的 ODBC 驱动程序,它包含在 Windows 中,或者对于非 Windows,您可以利用 FreeTDS 之类的东西。

另外SQLite 提供了一种更直接的 C 访问数据库的机制,允许嵌入等。

而且,根据您的存储需求,BDB 可能值得研究。

【讨论】:

  • 我倾向于认为 SQLite 的 ODBC 驱动程序在用 C 实现新应用程序时有点矫枉过正。如果您有预先存在的 ODBC 代码很有用,但为什么不只使用 C API直接?
  • 你当然可以直接使用 SQLite API,但是使用 ODBC 可以更容易地支持以后的其他数据库。 ODBC 也可能在未来证明对 Mohit 有用的知识。
【解决方案2】:

真正的问题是你需要什么。如果您定义自己的数据结构,您必须管理您正在做的所有方面——如果您想要可变数量的记录,您需要使用 malloc/free/realloc 管理该空间。如果要将数据存储在磁盘上,则需要编写代码来读取和写入结构。如果你想索引数据,你需要编写代码来索引它等等。

作为交换,您可以真正快速访问,特别是如果您的需求非常简单(例如,少量、固定数量的相同记录,以便您可以轻松使用结构数组)。

使用数据库或多或少会逆转这些 - 您获得了更大的灵活性来处理可变类型的数据、内存中比您想要的更多的数据、ACID 事务、动态构建索引等。作为交换,您最终可能会得到更多代码来执行您可能不需要的事情,并且执行速度会变慢 - 特别是如果您存储的数据足够少,可以全部放入内存中。

【讨论】:

    【解决方案3】:

    您可以将 MySQL 与 C example here 一起使用 http://www.ucl.ac.uk/is/mysql/c/

    【讨论】:

      【解决方案4】:

      可以使用 Connector/C 库从 C 访问 MySQL。

      MS SQL Server 似乎只与 ODBC 兼容,不提供自己的 C 库。长期以来,MS 一直在巧妙地阻止 C 开发,所以这并不奇怪。

      AFAIK、Oracle、PostGreSQL 都有自己的 C 库。所有这些也可以通过 ODBC 访问(包括 MySQL)

      SQLite 主要是作为 C 库编写的嵌入式数据库。这仅支持非标准版本的 SQL,因此可能不是您想要的,但非常适合存储少量数据。 C API 文档可以在here找到。

      【讨论】:

        猜你喜欢
        • 2015-12-03
        • 2010-09-25
        • 2013-11-28
        • 2019-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-06
        相关资源
        最近更新 更多