PDA

Просмотр полной версии : Как работать с бд и есть ли для этого отдельные библиотеки?



Resager
13.04.2009, 20:52
У меня возникла потребность в базе данных, ибо в них всё организовано чётко, по полочкам, как я люблю, и на сколько я знаю. если установить пароль, то взломать его можно только опдбором....

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

НО я никогда раньше не работал с БД, не знаю как они устроены, (а также что такое в них регистры). ПОмогите пожалуйста!!!
К тому же: можно ли создать, к примеру 3 поля, Цвет, Вопрос, Флаг, и только по этим данным организовать БД (ну естественно на вопрос отводится 256 Б? или как?).

Вобщем прошу помощи, пока что наткнулся на кучу литературы, которые понятны будут лишь после некого ВВЕдения...

+ а что такое - "таблицы DBF с индексами NTX" ничё не понятно, что подразумевается под таблицами (програмно - записи? а как параметры их разве можно передавать?)

Naeel Maqsudov
13.04.2009, 21:47
Для начала расскажите, на чем пишете?
Может быть Вам для Ваших задач хватит MS Access из MS Office?

mc-black
14.04.2009, 11:54
Вам для начала надо немного узнать о базах данных, прочитать и попробовать что-нибудь делать в какой-нибудь простой СУБД: MS Access или FoxPro (старые DOS-версии). Важно разобраться в понятиях:
база данных
таблица
запись
поле
реляционные базы данных и язык запросов SQL

Дальше, когда столкнетесь с программированием баз данных, то уже сами выберете конкретную, подходящую Вам СУБД и лучше познакомитесь с технологиями доступа к базам данных. Забегая вперед назову некоторые общих из технологий доступа:
ODBC, DAO, ADO, ADO.NET - выбор будет зависеть от разных причин.

9e9names
14.04.2009, 12:23
Добавлю свои 5 копеек: на мой взгляд MS Access слегка извращает в глазах новичков представление о СУБД, связывая интерфейс фактически клиентского приложения над БД и движок самой БД. Я бы порекомендовал найти джентельменский набор веб-разработчика Денвер (он же Denwer), благо он бесплатный; комплект легко устанавливается (и легко удаляется :D), автоматически устанавливает MySQL и phpMyAdmin - при помощи которых легко можно "пощупать" вставку, удаление и изменение данных или создание, удаление и изменение самих таблиц.

Naeel Maqsudov
14.04.2009, 14:47
Или так... Но в любом случае, Resager, Вы в этой теме просите объяснить Вам то, о чем написаны сотни тысяч книг. Поэтому давате вместо: "У меня возникла потребность в базе данных", - Вы расскажете подробно что Вы хотите получить в итоге.

Resager
14.04.2009, 16:23
Naeel Maqsudov
язык, на котором пишу - AHK, но как я полагаю, если организовать работу с БД через команду для работы с функциями, хранящиеся в библиотеках (dll), то от языка практически ничего не зависит (едиественная сложность, передавать параметры *-го типа.
Встроенных команд для работы с БД в языке на данный момент не обнаружил.
Однако в недалёком будущем буду реализовывать ту же самую задачю на С++ (эм... Виажулке 2008 :) )

mc-black,
спасибо за список терминов, обязательно поищю в википедии...

9e9names,
вы правы, мы изучали MS Access в 10-м классе, из того. что нам задавали (ну и примеры работы с MS Access в сети) я справлялся на ура... но ИМХО - это как в поинте рисовать Оргграфы... о БД никакого понятия не дало, однако мы не полностью же изучали эту СУБД.
Другие попробую...

Naeel Maqsudov,
задача у меня такая, сделал программу, для создания теста (Элементы: Вопрос, путь к изображению, варианты (их Н штук), ответ на вариант, ещё несколько флагов, несколько числовых данных, и ещё одна строка).
Мне нужно Создавать файл с этими элементами, изменять, добавлять (может и удалять тоже).
И самое главное, шифрование, с использованием пароля. А для этого, считаю удобным использовать внешнюю функцию, с уже созданной организацией БД.
На счёт тысячи книг, а не датите хотя бы пару названий полезных таких книг про БД (ну более менее современные), на ваш вкус.

Naeel Maqsudov
14.04.2009, 16:59
По поводу книг: давайте сначала определимся с используемым движком, а уж потом будем говорить о книгах по конкретной СУБД.

Итак. Если вы можете работать с COM, то рассмотрите такой вариант:
База MSJet (т.е. Access) и готовые компоненты в виде ADO.
преимущества:
- вся база - один файл
- переносимость (в Windows всегда присутствует ядро MSJet (msjetXX.dll))
- удобное проектирование структуры БД с помошью Access
- с Access Вы уже немного знакомы, что тоже "плюс"
- MSJect предусматривает криптование базы, хотя и некриптованная она не не так уж читабельна на низком уровне :)
Даже если Ваши инструменты разработки не поддерживают COM, то можно воспользоваться ODBC. Access драйверы для ODBC естественно не проблема.

Resager
14.04.2009, 17:02
COM-порт? О_о
А где можно прочитать. как использовать эту субд (через DLL)? - этот вопрос, думаю, стоит рассматривать, после того, как с первым....

Naeel Maqsudov
14.04.2009, 17:30
Хотел сразу разъяснить аббревиатуры, но меня срочно позвали, поэтому отправил как есть :)

COM - Component Object Model. Про COM здесь прямо на developing.ru есть материалы http://www.developing.ru/com/
Если перейти на C++, то это точно будет несложно, а про "AHK" я ничего не могу сказать.

Вообще сама база физически может быть
- MSJet (Access) - 1 файл *.mdb
- DBASE или FoxPro - несколько dbf-файлов (по одному на таблицу) + несколько индексных файлов (файлы индексов у DBASE или FoxPro несовместимы)
- Paradox - несколько db-файлов (по одному на таблицу) + различные индексные файлы
- другие

Для работы с большинством форматов существуют технологии
- ADO
- DOA
- RDO
- ODBC
- некоторые другие
* Первые три основаны на технологии COM. Если кратко, то суть в том, что в некой DLL реализованы классы, которые обеспечивают работу с полями, таблицами, индексами, наборами записей (recodrset-ами).
* ODBC - это такой глобальный стандарт, который позволяет обратиться к некой DLL и вызывать специальные функции для подключения к БД, выполнения выборки данных, выполнения изменения данных. Сама ODBC использует некоторое количество драйверов для работы с разными типами БД.

ADO+MSJet на мой взгляд для вашей задачи лучше подходит.

Дополнительно по любой из аббревиатур сделайте поиск хоть в википедии, почитайте. Не хотелось бы все это тут цитировать и переписывать.

mc-black
15.04.2009, 14:38
Если AHK - это сокращение от названия скриптового движка AutoHotkey (http://www.script-coding.info/AutoHotkeyTranslation.html), то работать придется на API (при помощи ODBC к примеру). Вызвать API-функцию там может функция DllCall(). А вообще программировать на Этом обработку баз данных будет несладко. Но, как говорится в умелых руках все заработает. Книг по ODBC я не знаю, есть ветка в MSDN Microsoft Open Database Connectivity (ODBC) (http://msdn.microsoft.com/en-us/library/ms710252(VS.85).aspx) и есть уроки iczellion'а по применению ODBC на MASM32 - мне этого было достаточно. Если покопать, уверен, найдется литература также на русском языке.

Laba
15.04.2009, 14:39
задача у меня такая, сделал программу, для создания теста (Элементы: Вопрос, путь к изображению, варианты (их Н штук), ответ на вариант, ещё несколько флагов, несколько числовых данных, и ещё одна строка).
Мне нужно Создавать файл с этими элементами, изменять, добавлять (может и удалять тоже).
И самое главное, шифрование, с использованием пароля. А для этого, считаю удобным использовать внешнюю функцию, с уже созданной организацией БД.
На счёт тысячи книг, а не датите хотя бы пару названий полезных таких книг про БД (ну более менее современные), на ваш вкус.

Типичная задача по работе с БД. Надо бы почитать про SQL. Там есть операции изменения данных. Чтение нужных записей тоже есть.

И проблема разграничения доступа решена.:) Не нужно будет шифроваться.

Книги про SQL уже обсуждали в соседней ветке

http://forum.developing.ru/showthread.php?t=14566

Resager
15.04.2009, 19:37
О, спасибо всем, на выходных гляну, буду разбираться....

Язык да, AutoHotKey, DLLCall() - именно из-за неё и искал библиотеки а не субд с интерфейсом... буду пытаться

mc-black
15.04.2009, 20:54
odbc32.dll, ветка в MSDN по ODBC и вперед! =) Могу подкинуть ссылок:

на русском кое-что (http://www.intuit.ru/department/database/cdba2/1/);
Microsoft Open Database Connectivity (ODBC) (http://msdn.microsoft.com/en-us/library/ms710252(VS.85).aspx)