LINUX.ORG.RU

SQL...


0

0

Нужно накатать реляционную базу данных. Скорее всего, буду писать с использованием вложенного SQL, подскажите библиотечки под С, в которых реализуется SQL-интерфейс. Заранее благодарен.

Ответ на: комментарий от theserg

Та ни. "Реляционная база данных" - это просто некая обобщённая форма связи данных. SQL - это язык работы со стандартной реляционной базой. Фсякие там MySQL и MS SQL - это конкретные реализации сервера баз данных, предоставляющие интерфейс для ИНТЕРАКТИВНОГО обращения посредством SQL. А мне нуна спроектировать вполне определённую не стевую базу с ограниченными возможностями. Это можно сделать, используя "вложенный" SQL, для этого мне нуна интерфейс между SQL и C, т.е. собственно, библиотеку. Я, конечно, могу сам накатать нужный формат данных и API к нему, но нафига изобретать велосипед?

Unruly_Mind
() автор топика
Ответ на: комментарий от Unruly_Mind

"вложенный" - это типо ембеддед ?

если да - то упаси Боже! это такая нефункциональность и уродство... недавно для DB/2 писал...

Pi ★★★★★
()
Ответ на: комментарий от Pi

Я таки боюсь предположить, кто такой этот "Ембеддед". Я имел в виду библиотеку, которая обеспечивает создание неких Сущностей и последующее их управление в соответсвии со стандартами SQL посредством языка C. Неуж-та никто ничего подобного не видел? Все только MySQL знают?

*в ужасе рвёт на себе волосы (на голове)*

Unruly_Mind
() автор топика
Ответ на: комментарий от Unruly_Mind

ты это имеешь в виду?
/скажем/

#include <stdio.h>

EXEC SQL INCLUDE SQLCA;

void showDomains(){
	EXEC SQL CONNECT TO Biblio user stud using stud;
	EXEC SQL BEGIN DECLARE SECTION;
		short dom_id;
		char  dom_vardas[25];
	EXEC SQL END DECLARE SECTION;
	EXEC SQL DECLARE dom_curs CURSOR FOR SELECT Id, Vardas
		FROM vipo3816.Domenas;
EXEC SQL OPEN dom_curs;
	printf ("Id     Domenas\n");
	printf ("--------------\n");
	while (1){
		EXEC SQL FETCH dom_curs INTO :dom_id, :dom_vardas;
		if (SQLCODE==100){
			break;
		}
		printf ("%d      %s\n", dom_id, dom_vardas);
	}
	EXEC SQL CLOSE dom_curs;
	EXEC SQL CONNECT RESET;
}

Pi ★★★★★
()
Ответ на: комментарий от Unruly_Mind

litesql or sqllite
embeded mysql
в конце концов беркли дб никто не отменял...

google тебе в помощь их тьма и все дают апи на Це как минимум.

anonymous
()
Ответ на: комментарий от Pi

Я пока что плохо себе представляю, что именно я имею в виду, именно пожтому я задаю вопросы.
Я знаю, шо такой интерфейс должон быть, вот и вопрошаю.

>EXEC SQL INCLUDE SQLCA;

Как понимать эту строчку? Чего-то я не вкурю.
Если ты пояснишь, что именно написано в приведённом тобой примере (с интимными подробностями), я буду тебе очень благодарен.

Unruly_Mind
() автор топика
Ответ на: комментарий от anonymous

>litesql or sqllite
>embeded mysql
>в конце концов беркли дб никто не отменял...

Ага, спасибо.

>google тебе в помощь их тьма и все дают апи на Це как минимум.

Для начала нужно знать, что именно искать. Гугль неправильно реагирует на запросы типа "хочу интерфейс для работы с SQL-базами под С". : )

Unruly_Mind
() автор топика
Ответ на: комментарий от Unruly_Mind

>EXEC SQL INCLUDE SQLCA;

всё, что начинается с EXEC SQL, обрабатывается препроцессором от субд - генерица компилируемый С код. Но ты с этим не связывайся :)

Pi ★★★★★
()
Ответ на: комментарий от Pi

>Но ты с этим не связывайся :)

А чего так?

Удобно, имхо, нет?

Не, ну если ты чего-то конкретно можешь сказать что лучше, я буду очень рад, ибо с этим никогда не связывался и сейчас пытаюсь выбрать оптимальное решение. Ага-ага.

Unruly_Mind
() автор топика
Ответ на: комментарий от Unruly_Mind

Так ты что, хочешь... саму СУБД написать? Нда... возникает тогда вопросец: в каком формате саму БД хранить-то будешь?

А фсякие там оберточки (wrappers) и апишки существуют в большинстве своем под С для какой угодно СУБД. А коли сам писать интерпретатор языка SQL решил, то покопайся в учебниках по написанию компиляторов и интерпретаторов... :)

anonymous
()
Ответ на: комментарий от Unruly_Mind

> Не, ну если ты чего-то конкретно можешь сказать что лучше, я буду очень рад, ибо с этим никогда не связывался и сейчас пытаюсь выбрать оптимальное решение. Ага-ага

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

amm
()
Ответ на: комментарий от Unruly_Mind

Re[2]: Но ты с этим не связывайся :)

Неудобно. Хороший API лучше(IMO). Но для C хороший API сделать непросто, ибо язык слабоват. Потому и препроцессоры.

Лучше использовать "хороший" язык с хорошим API, чем "плохой" язык с плохим API и препроцессором.

NB! "плохой" и "хороший" - относительны.

DonkeyHot ★★★★★
()
Ответ на: Re[2]: Но ты с этим не связывайся :) от DonkeyHot

Всем спасибо. Общее направление мысли я воткнул. Я ещё повтыкаю в тему, как разберусь, выкину краткий ликбез по теме, может, кому интересно будет.

Unruly_Mind
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.