Подражать базе данных в C - PullRequest
2 голосов
/ 08 апреля 2010

Я довольно новичок в C. (я хорошо знаю C # [Visual Studio] и Java [Eclipse]). Я хочу создать программу, которая хранит информацию. Моим первым инстинктом было использование базы данных, такой как SQL Server. Но я не думаю, что он совместим с C. Теперь у меня есть два варианта:

  • Создать структуру (также typedef), содержащую типы данных.
  • Найдите способ интеграции SQLite через файл заголовка C

Какой вариант вы считаете лучшим? Или у вас есть другой вариант? Я склоняюсь к созданию структуры с помощью typedef, но меня могут заставить передумать.

Ответы [ 4 ]

6 голосов
/ 08 апреля 2010

ODBC является библиотекой C и разрешает доступ к базам данных в режиме, очень напоминающем JDBC. Microsoft имеет драйвер ODBC для SQLServer, который включен в Windows, или, для не-Windows, вы можете использовать что-то вроде FreeTDS .

Также SQLite предоставляет механизм для более прямого доступа C к базе данных, который разрешает встраивание и т. Д.

И, в зависимости от ваших потребностей в хранилище, BDB может стоить исследовать.

1 голос
/ 08 апреля 2010

Настоящий вопрос в том, что вам нужно. Если вы определяете свою собственную структуру данных, вы должны управлять всеми аспектами того, что вы делаете - если вам нужно переменное количество записей, вам нужно управлять этим пространством с помощью malloc / free / realloc. Если вы хотите хранить данные на диске, вам нужно написать код для чтения и записи структур. Если вы хотите проиндексировать данные, вам нужно написать код для индексации и т. Д.

В обмен на это вы получаете действительно быстрый доступ, особенно если ваши потребности действительно просты (например, небольшое фиксированное количество идентичных записей, так что вы можете легко использовать массив структур).

Использование базы данных более или менее обращает их вспять - вы получаете гораздо больше гибкости для работы с переменными типами данных, большего количества данных, чем вы хотите в памяти, транзакций ACID, построения индексов на лету и т. Д. В обмен на это вы, вероятно, в конечном итоге получите больше кода для выполнения вещей, которые вам могут не понадобиться, и более медленное выполнение - особенно если вы храните достаточно мало данных, чтобы они все могли поместиться в памяти.

0 голосов
/ 08 апреля 2010

MySQL доступен из C с использованием библиотеки Connector / C .

Похоже, что MS SQL Server совместим только с ODBC и не предоставляет свою собственную библиотеку C. MS долгое время тонко препятствовала разработке C, так что это не удивительно.

AFAIK, Oracle, PostGreSQL имеют свои собственные библиотеки C. Ко всем этим также можно получить доступ через ODBC (включая MySQL)

SQLite - это, прежде всего, встроенная база данных, написанная как библиотека C. Это поддерживает только нестандартную версию SQL, поэтому она может быть не тем, что вам нужно, но отлично подходит для хранения небольших объемов данных. Документы C API можно найти здесь .

0 голосов
/ 08 апреля 2010

Вы можете использовать MySQL с C пример здесь http://www.ucl.ac.uk/is/mysql/c/

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