Please enable JavaScript to view this site.

» Нет разделов более высокого уровня «

Пример использования функций работы с базами данных

Scroll

//пример текстового файла 1.loa с тремя параметрами - шириной, высотой и типом линии прямоугольника

/*

10.0 100 1

15.0 80 2

20.0 120 1

*/

 

#ifndef __LIBTOOL_H

#include <libtool.h>

#endif

 

#ifndef __LIBDB_H

#include <libdb.h>

#endif

 

 

static void ReadFirstStatement(reference bd, reference r1, void *b) {

// вспомогательная функция чтения записей

 

char buf[40];

int i;

do { // считываем все записи выборки

i= ReadRecord(bd, r1, b);

if (i) {

sprintf(buf, "a=%4.1f b=%4.1f t= %d", b->a, b->b, b->t);

Message(buf);

}

} while(i);

Message("конец выборки");

} /* ReadFirstStatement */

 

void ExampleDB (void) {

int i;

char buf[40];

struct {

double a;

double b;

int t;

} b;

 

// создать блок заголовка базы данных

reference bd = CreateDB ("TXT_DB");

// связать с файлом базы данных 1.loa

ConnectDB(bd, "1.loa");

 

// задаем отношение из двух действительных и одного целого поля

reference r1 = Relation(bd);

RDouble ("a");

RDouble ("b");

RInt ("");

EndRelation();

 

// определяем запрос для считывания всех полей(колонок) записи

DoStatement(bd, r1, ""); // равносильно DoStatement(bd, r1, "1 2 3");

 

// cчитываем все записи

ReadFirstStatement(bd, r1, &b);

 

// выдать вторую запись

Condition(bd, r1, "Index1000 = 2");

ReadFirstStatement(bd, r1, &b);

 

// по условию выдать первую и третью запись(см. файл 1.loa)

Condition(bd, r1, "a=10 || b>100");

ReadFirstStatement(bd, r1, &b);

 

//задаем отношение для считывания только второго поля записи

reference r2 = Relation(bd);

RChar("b", 20, 0);

EndRelation();

 

// Освободить запрос базы данных

FreeStatement(bd, r1, «»);

 

DoStatement(bd, r2, "2");

do {

i= ReadRecord(bd, r2, buf);

if (i) {

Message(buf);

}

} while(i);

Message("конец выборки");

 

DisconnectDB(db);

// удаляем блок заголовка базы данных

DeleteDB(bd);

}; /* ExampleDB */

© ООО «АСКОН-Системы проектирования», 2024. Все права защищены. | Единая телефонная линия: 8-800-700-00-78