- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания S. D. F. - W Cat
- Категория: Компьютеры и Интернет / Базы данных
- Название: S. D. F.
- Автор: W Cat
- Возрастные ограничения: (18+) Внимание! Аудиокнига может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту для удаления материала.
Шрифт:
Интервал:
Закладка:
Пароль S. D. F.
* А, понял, примитивный пароль, кнопочки под левой рукой.
- Пароль не распознан. В доступе отказано…
* Ладно, вторая попытка, помнится есть расширение sdf – вроде это база данных?
- Уже теплее…
* Третья попытка, третья… сдаюсь.
- Вообще-то пароль SQL Delphi Firebird.
- Поставлена задача: написать программу для исполнения SQL запросов. Программа пишется в среде Delphi, а база будет функционировать под управлением СУДБ Firebird.
* Я знаю пароль, я вижу ориентир…
Есть ли у вас план…
- Давай поиграем с SQL.
* Поиграем? Ну, давай… А почему с SQL?
- Ну, у меня возникла очередная задача – упорядочивание моей библиотеки книг FB2.
* Но эта задача, сто лет как решена, есть масса программ для работы с библиотеками.
- Вот это - не надо… Чукча не пользователь, чукча – программист.
* Может быть, чукча, написал свой офис и заодно операционку?
- Конечно, заманчиво… и в истории есть примеры,… но пока давай займемся SQL.
* Ну, кое-что я помню, меня этому учили…
- Как я тебя понимаю, мы все учились понемногу и главное как-нибудь.
* Так, с помощью, какой базы мы будем писать базу, погоди, я запутался…
- Я понял, ты имеешь в виду СУДБ (систему управления базами данных). Теоретически это не имеет значения SQL и в Африке SQL. Но, я предлагаю Firebird.
* Законный вопрос, а почему именно эта птичка?
- Как говорит Википедия: Firebird (FirebirdSQL) — компактная, кроссплатформенная, свободная система управления базами данных (СУБД), работающая на Linux, Microsoft Windows и разнообразных Unix платформах. Для меня большое значение имеет то, что она компактна и бесплатна (Firebird - является полностью свободным от лицензионных отчислений даже для коммерческого использования.).
* Есть ли у вас план, мистер Фикс?
- Есть ли у меня план? Да у меня целых три плана!
- Во-первых, написать программу для выполнения запросов SQL.
- Второе, проработать SQL с помощью книги Мартина Грубера «Понимание SQL»
- А потом – писать базу для FB2, но это уже за рамками этой книги.
* Ну вот. Так хорошо начиналось «Играть с SQL», а теперь опять, писать программу…
- Во-первых, отсылаю тебя к 5ой строке этого текста, а потом…
* Но есть же масса подобных программ…
- Есть. И одной из них я постоянно пользуюсь – это IBExpert. Отличная программа, и переплюнуть ее не берусь. Но есть неприятный момент, который меня постоянно раздражает каждый раз каждый новый вариант базы надо регистрировать,… да это всего несколько минут, но как я уже говорил, если выполнение рутинных действий (или ожидание) занимает более 10 секунд – для пользователя это непереносимо.
* А почему они так сделали, ведь не дураки там сидят?
- Это расплата за универсализм, повторюсь, отличная программа, но универсальная. Вспомни, как относились истинные меломаны к музыкальным комбайнам…
* Ну, а второй пункт, почему именно эта книга.
- Да надо, что-то выбрать, why not – книга то хорошая, и примеров там много.
* Хорошо, техническое задание написано - поехали!
Браузер
- Как я уже сказал, меня достала IBExpert, и года два назад я написал обозреватель баз данных формата Firebird, про себя я его называю браузер баз данных. Ну, назови БДБ или ДББ или ББД – только в печь не сажай.
- Начинай новый проект. Новая форма. Ну, давай, я тебе разжевывать все не буду, получи рисунок, и сам расставляй компоненты.
Рис 1. Главная форма
Рис 2. Форма TDataModule
- В этом модуле IBTransaction1 должна быть привязана к IBDatabase1 и соответственно IBSQL1 привязывается к IBTransaction1 и IBDatabase1.
* Как это «привязаны»? Что ты имеешь в виду.
- Я имею в виду, что не буду по-шагово все разжевывать, давай-ка поработай сам, понять все не трудно… (я настаиваю на мысли – если дать готовые рецепты – учащийся ничего не запомнит, да, сейчас он позлится, «его заставили потрудится» - и эта эмоция запишет в память нужные знания)
Первая задача: создать новую базу данных.
Рис 2.
010 procedure TFMain.NewDB1Click(Sender: TObject);
020 var
030 fn : string;
040 begin
050 fn := InputBox('File Name',' Введите имя файла новой базы данных','');
060 if fn = '' then exit;
070 if UpperCase(ExtractFileExt(fn)) <> '.FDB'
080 then fn := fn + '.FDB';
090 with DataM do
100 begin
110 IBDatabase1.Params.Clear;
120 IBDatabase1.Params.Add('USER SYSDBA');
130 IBDatabase1.Params.Add('PASSWORD masterkey');
140 IBDatabase1.Params.Add('PAGE_SIZE 4096');
150 IBDatabase1.DatabaseName:= fn;
160 IBDatabase1.SQLDialect := 3;
170 IBDatabase1.CreateDatabase;
180 IBDatabase1.Connected:=True;
190 IBTransaction1.Active:=True;
200 end;
210 end;
- В 50 строке запрашивается имя для файла новой базы данных, если мы не ответим, то в 60 строке выход из процедуры.
- В 70 строке проверяется, ввели ли мы расширение в имени файла, и если мы ленивы, то 80 строка таковое расширение добавляет.
- А вот это, важно! В строках 120 и 130 вводится имя пользователя и пароль. Во всех руководствах по Firebird говорится, что приведенные пароль и пользователь, указанны для образца, а использовать надлежит свои.
- Посему, меняем строки на:
120 IBDatabase1.Params.Add('USER Cats');
130 IBDatabase1.Params.Add('PASSWORD forever');
* А причем здесь коты?
- Ну, у себя ты введешь свои пароли.
* О, у себя, я как всегда напишу…
- Стоп, стоп, стоп! И ни другу, не врагу, никогда не …
* Ладно, я понял.
- * -
* Шеф, усе пропало!!! т.е. не получилось. Появилось угрожающее окно Debugger Exception Notification, со страшной надписью Project Project1.exe raised exception class EIBInterBaseError with message 'unavailable database'. Process stopped. Use Step or Run to continue..
- Спокойствие, только спокойствие... бывало и у меня такое.
- Для комфортной работы Firebird хочет иметь доступ к своим dll а именно:
gds32.dll
icudt30.dll
icuuc30.dll
и желательно:
firebird.msg
Конечно, лучше всего поместить эту компанию, в папочку WINDOWSsystem или WINDOWSsystem32, в этом случае, в дальнейшем ни о чем не надо беспокоится, НО если тебе надо показать твою гениальную программу заказчику, (а на его месте я бы не разрешил лазить тебе в системные папки) лучше держать эту свору в демонстрационной папке.
- * -
* У меня проблемы стал копировать dll, а система и говорит файл gds32.dll мол у меня есть только постарее да поменьше, можно ли заменить, ну я слов то не померил, и системе той поверил. А эта Редиска и говорит что она занята, т.е. файл занят.
- Ну, занят файл, значит, занят, мы то ящик покупаем не для собственного удовольствия, а для удовлетворения запросов системы, ну и ладно…
- Ибо сказано: Если у тебя есть фонтан – заткни его, и компьютеру надо отдохнуть…
- Все выключай, и иди погуляй.
«Продолжение следует»
ББД продолжение
- Извини, выключать комп было совершенно не нужно. Достаточно было закрыть Delphi, именно он занимал файл.
* Ладно, проехали. У меня тут как раз возник вопрос. Все сработало, файл базы создался, но на фейсе программы ничего не изменилось.
- Да, вот тут, ты прав. Недоработка. Но, я тоже обдумал… надо ввести изменения.
165 try
170 IBDatabase1.CreateDatabase;
180 IBDatabase1.Connected:=True;
190 IBTransaction1.Active:=True;
192 except
194 ShowMessage('Не нахожу dll');
195 exit;
196 end; // try
187 FMain.Caption := fn;
198 ShowTables;
200 end;
- Во-первых давай позаботимся о том, чтобы исключительное положение, которое у нас возникло, было бы хоть как ни будь обработано ( строки 165, 192-196).
- Строка 198 выдаст название новой базы в заголовке программы и сообщит что таблиц, в этой базе пока нет.
procedure ShowTables;
begin
with FMain.ListBox1 do
begin
Clear;
Items.Add('Empty');]
end;
end;
- Сразу скажу, что процедуру ShowTables мы очень скоро будем существенно менять, посему не буду нумеровать строки…
- * -
* Все сработало, но…
- Да, хвалится пока еще нечем. Надо делать следующий шаг.
Задача: открыть существующую базу данных.
010 procedure TFMain.OpenDB1Click(Sender: TObject);
020 begin
030 with OpenDialog1 do
040 begin
050 Filter := 'DB|*.fdb';
060 DefaultExt := 'fdb';
070 if Execute then
080 with DataModule2 do
090 begin
100 IBDatabase1.DatabaseName:= FileName;
110 IBDatabase1.Params.Clear;
120 IBDatabase1.Params.Add('USER Cats');
130 IBDatabase1.Params.Add('PASSWORD forever');
140 try
150 IBDatabase1.Connected:=True;
160 except
170 ShowMessage('Не могу работать!');
180 exit;
190 end; // try
200 IBTransaction1.Active:=True;
210 FMain.Caption := FileName;
220 ShowTables;
230 end; // DataModule2
240 end; // OpenDialog1
250 end;
- Открываем диалог загрузки файла – стр. 30
- Т.к. этот диалог будет использоваться и в других целях в строках 50, 60 уточняем, что сейчас будет речь идти о базе данных.
- Если в стр. 70 файл базы найден, вводим параметры базы строки 100-130 (обрати внимание пароль и пользователь должен быть тот же, что и при создании базы).
- Наученные опытом в строках 140-190 пытаемся соединится с базой. (обрати внимание на стр. 190 – желательно кончики программных блоков помечать – легче будет разбираться).