Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 9
Всего онлайн: 9
Зарегистрировано юзеров: 7550
Комментариев на сайте: 670
Новый юзер: dolginaolha



Последние комментарии
c
Amard прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
Всем привет! В Школе Частных Прорабов Prorab2.ru обучают как сделать дешевый и недорогой фундамент своими руками используя Строительные Нормы и Правила (СНиП), технологии для фундаментов и Технику Безопасности (ТБ) на объекте с помощью одной из лучших онлайн школ в мире ,а также единственной онлайн школы в России и на просторах бывшего СНГ Вы реально научитесь строить Фундамент за пол цены от рыночной стоимости работ – это не шутка, не розыгрыш и не мечта. Фундамент за 50 процентов – это реальность! Недавно я нашел крутую онлайн школу. Мужики реально крутая школа, все объясняют без заумных слов. Все нужно делать заблаговременно и разумно экономно! Там изучают множество тем о фундаментах. Одна из них: [url=https://prorab2.ru/category/fundament]Фундамент из бруса.[/url] До новых встреч!
CarolineWrifs прокомментировал "Урок 3 - Конструкция IF...THEN...ELSE":
[img]https://kapsuly-lipocarnit.ru/files/lipocarnit_1/img/product-head1.png[/img] [url=https://kapsuly-lipocarnit.ru/][img]https://karga.info/wp-content/uploads/2019/02/orig.jpg[/img][/url] Lipocarnit (ЛипоКарнит) - [url=https://kapsuly-lipocarnit.ru/]липокарнит капсулы для похудения цена екатеринбург[/url] для похудения в Екатеринбурге Цена: 990 руб. [url=https://kapsuly-lipocarnit.ru/]lipocarnit отзывы[/url] - Полная конфиденциальность Наименование и назначение товара не указаны на посылке. В соответствии с политикой конфиденциальности мы не передаем информацию третьим лицам. Аудио обзоры нашего магазина Липокарнит (LipoKarnit) - капсулы для похудения - описание Кто такие представители прекрасного пола ради похудения? Часы физических упражнений, строгие диеты, даже липосакция. Но, по мнению большинства врачей, лучше всего получить твердое натуральное средство для похудения с гарантированным эффектом. Среди тех, кто заменяет упражнения и осанку, профессионалы включают продукт для похудения Lipocarnit. По словам производителей, любая капсула бьет избыток жира на клеточном уровне, ускоряя обмен веществ и снижая уровень глюкозы в крови. LipoCarnit превращает жир в энергию и снижает уровень холестерина. Это, если верить словам клиентов, приводит к обещанной и быстрой потере веса. Почему мы набираем вес? Есть много причин, почему мы набираем вес. К ним относятся диетические излишки и фиксированный образ жизни и генетическая предрасположенность. Однако наименее реальным бедствием современной цивилизации является изменение в процессе обмена веществ. Нарушение обмена веществ возникает в результате: отсутствие компонентов, пригодных для обработки жировых клеток; сбой в процессе образования и разложения жира; отсутствие деталей, необходимых для осуществления химических реакций. Начальные признаки избыточного веса Дамы считают, что образования с избыточным весом наверняка не будет недостатка. Однако не только стрелки весов способны говорить о неточном ходе жирового обмена. Сначала вес может не измениться, однако другие симптомы нарушения обмена веществ будут наименее очевидными: апельсиновая корка; храп; постоянный аппетит; слабость; высокое кровяное давление; Боли в спине и суставах. Сказать, что все эти плохие реакции на тело означают заботиться о себе! Помогает ли нам бездействие? Если вам кажется, что лишний вес - это не та проблема, из-за которой вы должны изменить свой обычный образ жизни, вот лишь несколько несоответствий, которые могут привести к избыточному весу и неправильному обмену веществ. : высокое кровяное давление; избыток холестерина; уровень сахара в крови; проблемы с поджелудочной железой; Риск склероза и инфаркта миокарда. Не волнуйтесь, получите естественное и неопасное лечение для контроля жира - капсулы Липокарнит. Липокарнит (Li Капсулы ЛипоКарнит разрушают жировые отложения за счет действия состава природного баланса; Липоевая кислота нормализует уровень глюкозы в крови, очищает и сохраняет печень, ускоряет выделение энергии липидными клетками; Pycinate Pycollinate уменьшает чувство голода, расщепляет жир и нормализует кровяное давление; L-карнитин превращает липиды в энергию, снижает уровень холестерина. Поступление таким образом, чтобы улучшить ум, а не состав, значительно уменьшить избыточный вес. И сразу же для похудения не стоит ограничиваться едой. Продукт «переконфигурирует» организм для максимально быстрого удаления жиров и в то же время не вызывает привыкания или побочных эффектов.

Знакомство с SQLite

Часто на форумах, да и здесь на сайте спрашивают, какую базу данных выбрать. Хочу сегодня представить вам ещё один движок БД, у которого есть свои преимущества.

Называется этот движок SQLite. Итак, его преимущества:

бесплатный + открытый исходный код;
достаточно быстр;
не нуждается в дополнительной настройке на клиентской машине – распространять вместе с приложением нужно только одну dll;
лоялен к программисту;
возможность работать с компакт-диска (т.е. в режиме "только для чтения");
возможность работать с гостевого аккаунта;
никаких записей в реестр и на диск (кроме dll и файла базы данных), никаких настроек сетевых протоколов;
многоплатформенный: есть поддержка для многих языков (с 3 версии формат файла БД совместим для различных ОС и языков);
сама dll зависит только от одной системной dll - MSVCRT.DLL, которая всегда есть в системе;
синтаксис SQL достаточно хорошо соответствует стандарту – вы можете взять любую книгу, где описывается ANSI SQL 92 и пользоваться. Или посмотреть на сайте http://www.sqlite.org/lang.html.

Но есть и недостатки:

не рекомендован для баз большого размера (эксперты не рекомендуют более 200 Мб);
есть только два типа данных – целое автоинкримент и строка (всё остальное – эмулируется через строки);
не предназначен для многопользовательского использования (хотя это и возможно).
Начальные приготовления

Для работы с этой базой нам в обязательном порядке понадобится сама dll. Её можно скачать с сайта http://www.sqlite.org/ или взять в архиве к статье. С dll можно работать напрямую, но куда удобнее использовать обертку в виде классов. Есть обертка, которая подобна делфийскому TTable, есть и драйвер для ODBC, который позволяет работать с базой посредством TADOTable. И если первый вариант ещё интересен, то вариант с использованием через ADO лишен смысла – многие «вкусности» теряются.

В архиве вы найдете разные классы для работы. Я работаю с одним с них, и дальше буду описывать его. Главное преимущество – он без компонентов. Хотя кому-то это и покажется сложным, но можно, например, делать консольные приложения.

Также неплохо иметь ещё одну программу – программу для редактирования баз данных. Что-то в виде Database Desktop, только для SQLite. Такая программа есть и она бесплатна. Скачать можно здесь http://sqlitebrowser.sourceforge.net/ или опять же, взять в архиве. Хотя программа и проста, свою работу выполняет отлично. Мы не будем составлять базу в программе, а пойдём как настоящие кодеры - научимся создавать её в своей программе.

Работа с БД

Для примера мы создадим маленькую базу из одной таблицы. У нас будет одно автоинкрементое поле и два строковых.

Запускаем Delphi. Создаём новый проект. В папку с проектом копируем файлы sqlite3.pas, sqliteTable3.pas и sqlite3.dll. Дальше их надо подключить к проекту. Выбираем в меню Project – Add to project и добавляем эти файлы. Также не забываем сделать File – Use unit и выбрать эти же файлы, но предварительно переключившись на главный юнит.

После строки {$R *.dfm} допишем Var sldb: TSQLiteDatabase; - это будет глобальный объект для работы с базой. Хотя лучше сделать его свойством формы. Кто понимает – сделает :-)

Делаем подключение к базе. Для этого впишем такой код в FormCreate:

procedure TForm1.FormCreate(Sender: TObject);
begin
  sldb := TSQLiteDatabase.Create('test.db');
  try
    if not sldb.TableExists('test') then
       sldb.ExecSQL('CREATE TABLE Test (id INTEGER PRIMARY KEY, T1 TEXT, T2 TEXT)');
  except
    ShowMessage('При создании базы произошла ошибка.');
    Application.Terminate;
  end;
end;
Согласитесь, всё предельно просто. На ADO, если бы базы не было, пришлось бы делать дополнительную работу и писать процедуру не на одну строку.

Суть этого кода следующая – открыть файл test.db. Потом проверить, есть ли в нём таблица test. Если нет – создать, выполнив запрос. Если файла не будет, то он будет создан. Если же при создании таблицы у нас что-то не сложилось – закроем приложение.

Также не забываем, что за собой надо чистить.
procedure TForm1.FormDestroy(Sender: TObject);
begin
  sldb.Free;
end;
Теперь научимся добавлять записи. Ставим кнопку с заголовком "Create records" ("Создать записи") и создадим для неё такой обработчик
procedure TForm1.Button1Click(Sender: TObject);
  const
     n = 100; // сколько записей хотим добавить
  var i: integer;
     t: cardinal; //для подсчёта времени
begin
  t := GetTickCount;
  for i := 0 to n - 1 do
    sldb.ExecSQL('insert into test (t1,t2) values("'+inttostr(random(1000))+'","'+inttostr(random(1000))+'")');
  t := GetTickCount - t;
  ShowMessage(Format('Добавленно %d записей за %d мс',[n,t]));
end;
Теперь научимся отображать записи и выполнять запросы к базе.

Поставим TMemo, TEdit и кнопку "Select" ("Выбрать"). По нажатию на кнопку будем искать записи в поле T1, которые начинаются на те же цифры, что мы ввели в Edit, и будем их выводить.
procedure TForm1.Button2Click(Sender: TObject);
var sltb:TSQLiteTable;
   i:integer;
begin
  Memo1.Lines.BeginUpdate;
  try
    Memo1.Clear;
    sltb := sldb.GetTable('select t1,t2 from test where t1 like "'+Edit1.Text+'%"');
    try
    for i := 0 to sltb.Count - 1 do
      begin
        Memo1.Lines.Add(sltb.FieldAsString(0)+', '+sltb.FieldAsString(0));
        sltb.Next;
      end;
    finally
      sltb.Free;
    end;
  finally
    Memo1.Lines.EndUpdate;
  end;
end;
Как можно заметить, ничего особенного. Всё очень похоже на то, что доступно в BDE.

А картинки как?

Не знаю почему, но с другими базами добавление картинок для меня – большая трагедия. И если ещё с BDE всё спокойно, то с ADO сплошные приключения :-)

В SQLite есть специальный тип поля – BLOB (он есть и во многих других БД).

Итак, общий алгоритм добавления бинарных данных в базу:
- Добавить запись с помощью INSERT. Но не включать бинарное поле (BLOB).
- Узнать ID добавленной записи (есть специальный метод у TSQLiteDatabase – GetLastInsertRowID – возвращает значение последнего добавленного автоинкрементого поля. Его имя не обязано быть ID. Важно только наличие)
- С помощью UPDATE обновить данное поле, добавив к нему изображение/BLOB (для этого опять же есть метод UpdateBlob. Он принимает два параметра. Первый – сиквел-выражение вида "UPDATE моя_таблица SET поле_блоба = ? WHERE поле_id = сохранённый_id". Надо только заполнить по шаблону 4 слова. Второй параметр – подготовленные в TStream данные. Например, var f: TFileStream; … f := TFileStream.Create('FileName',fmOpenRead));.

Саму реализацию оставляю как домашнее задание :-)

Результаты

Всего несколько строк, а имеем сколько преимуществ. На этом движке я построил несколько приложений, используя его для хранения информации. По субъективным ощущениям работает база в несколько раз быстрей, чем аналогичная на Access. Приложение при старте запускается моментально, ведь ему не надо инициализировать COM-объекты.

Пробуйте, дерзайте, экспериментируйте!

Вот и всё, Удачи!

Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 31 Августа 2014
Просмотров:


Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.