Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/148: Рейтинг темы: голосов - 148, средняя оценка - 4.80
66 / 66 / 29
Регистрация: 13.02.2011
Сообщений: 392
1

Базы данных в Lazarus

14.10.2011, 15:03. Показов 29799. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хочу написать какую-нибудь программу на Lazarus'е... еще никогда не пробовал писать базы данных. Хотелось бы создать нечто наподобие базы данных "По красивым местам планеты", ну или что-то в этом роде для тренировки. Но встает такой вопрос. Я вычитал в книжке Никиты Культина "Delphi в задачах и примерах", что "для того, чтобы программа могла работать с базами данных, на компьютере должен быть установлен процессор баз данных Borland Database Engine(BDE).На компьютер программиста BDE устанавливается в процессе установки Delphi". В итоге возникли вопросы и сомнения:

-Как быть в Лазарусе? Устанавливается ли подобный движок, при установке Лазарус?
-Если да, то как его прописывать?
-Есть ли книжки по поводу написания баз данных в Лазарусе? Если есть киньте пожалуйста ссылку и саму книжку Буду очень признателен
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2011, 15:03
Ответы с готовыми решениями:

Lazarus 2.0.2 падает при активации базы TDbf
Есть объект Dbf1: Tdbf, он ссылается на таблицу dbf, из которой подтягиваются заголовки столбцов...

Как в Lazarus создать диаграмму используя TChart с информацией из базы Firebird?
Я так понял что для этого необходим еще один компонент: DBChartSource1. В качестве теста я связал...

Не отображаются Display Label в таблице. Вместо них имена полей базы. Lazarus + SQLite
Здравствуйте. Почему-то не отображаются в таблице заданные Dispaly Label, а вместо них — имена...

Как сравнить переменную со строкой базы данных или как присвоить переменной значение строки базы данных ?
подскажите пожалуйста как мне сравнить переменную типа string с каким нибудь строкой базы данных....

27
7 / 7 / 0
Регистрация: 12.03.2010
Сообщений: 40
14.10.2011, 17:45 2
BDE в Лазарусе отсутствует. И слава б-гу, ибо технология устаревшая и некроссплатформенная.
Вместо этого можно работать с MySQL, в ней куча всего интересного.
Краткое введение
А это в целом про компоненты и принципы работы
Ещё чуть-чуть

Хороших книг про Lazarus+MySQL не припомню. В принципе, можно начать читать любую книгу по MySQL (типа этой), а потом читать wiki с сайта Lazarus, пробовать писать и гуглить, если что-то не получается.
1
3 / 3 / 11
Регистрация: 17.01.2013
Сообщений: 354
08.10.2014, 17:02 3
Чё темы однотипные плодить, здесь спрошу.
Ссылки прочёл, примеров нет, поэтому так и не понял как саму базу-то создать и подключить к форме ?
ОС Linux + Lazarus.
Как-то делал такое в Delphi через ADO, база была MS Access 2003.
Блин, инфы мало про Lazarus... для Delphi на раз гуглятся простые (школьные) примеры для чайников...
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
09.10.2014, 08:54 4
berkut_174, для примера (стандартные компоненты). я использую связку rxlib+zeos и сервер mysql в локалке. для создания базы удобнее использовать редакторы - тот же phpmyadmin, heidisql...
1
3 / 3 / 11
Регистрация: 17.01.2013
Сообщений: 354
09.10.2014, 09:24 5
Цитата Сообщение от andrey_k3 Посмотреть сообщение
berkut_174, для примера (стандартные компоненты). я использую связку rxlib+zeos и сервер mysql в локалке. для создания базы удобнее использовать редакторы - тот же phpmyadmin, heidisql...
Это хорошо, но я даже не пойму какого формата должна быть база данных и куда нужно вписать имя файла с базой и через какие программы создавать. Я выше писал, что делал через ADO. Саму базу я создавал в MSO Access, кидал её в папку с проектом, размещал порядка трёх элементов на форме + grid, делал несколько тыканий мышкой и в grid'е моя таблица отображалась, а тут как ?
Компоненты разместил, связи настроил, остановился на этапе подключения базы, потому что там не написано какого формата должна быть база и как её создать... у меня никакого сервера нет.
Цитата Сообщение от andrey_k3 Посмотреть сообщение
phpmyadmin, heidisql...
Не понял что это... можно через LO Calc/Base базу создать ?
Для меня много непонятного... увы...
Спасибо.
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
09.10.2014, 10:36 6
Цитата Сообщение от berkut_174 Посмотреть сообщение
базу я создавал в MSO Access, кидал её в папку с проектом
тогда можно воспользоваться sqlite'ом и для создания базы, например, взять sqlitestudio. тогда и "вписать имя файла с базой" в поле DatabaseName sqlconnector'а можно...
вот простой проект на стандартных компонентах для работы с базой sqlite3
Вложения
Тип файла: zip db_std_cmpnts.zip (408.2 Кб, 322 просмотров)
1
3 / 3 / 11
Регистрация: 17.01.2013
Сообщений: 354
09.10.2014, 16:04 7
Не могу найти, где указать какую таблицу читать из базы...
Я в вашем проекте у компонента SQLConnector меняю свойство DatabaseName на своё, потом у компонента SQLQuery хочу сменить свойство Active на true, но получаю ошибку: "no such table: myfirsttable". Если же я в базе свою таблицу называю myfirsttable, то всё открывается. Подскажите, какое свойство и у какого элемента нужно сменить ? Вроде бы всё прошарил, но нет нигде myfirsttable.
Заранее спасибо.

Добавлено через 5 минут
На силу нашёл. У компонента SQLQuery свойство SQL, нужно добавить запрос 'SELECT * from Table1'
0
3 / 3 / 11
Регистрация: 17.01.2013
Сообщений: 354
19.10.2014, 16:57 8
Подскажите, какой тип данных выбирать для текста ? Я в sqlitestudio выбираю TEXT, но в Lazarus у меня вместо текста в ячейке -- (MEMO).
INTEGER отображается нормально.
Спасибо.

Добавлено через 11 минут
UPD: решение здесь http://freepascal.ru/forum/vie... =31&t=9638
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
20.10.2014, 08:20 9
berkut_174, VARCHAR
1
3 / 3 / 11
Регистрация: 17.01.2013
Сообщений: 354
23.10.2014, 18:39 10
Цитата Сообщение от andrey_k3 Посмотреть сообщение
VARCHAR
Разобрался уже, спасибо.

Тут такое дело, не получается добавить всё поле в Items элемента ComboBox.
На главной форме делаю так:
Delphi
1
2
3
  SQLQuery1.SQL.Clear;
  SQLQuery1.SQL.Add('SELECT fio FROM table1');
  ComboBox1.Items.Add(SQLQuery1.FieldValues['fio']);
и вроде всё работает, но на другой форме, если в другой ComboBox добавлять, то у меня только первая строка из таблицы добавляется. Как быть ? Или я неправильно делаю ?
Спасибо.
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
24.10.2014, 00:41 11
Цитата Сообщение от berkut_174 Посмотреть сообщение
только первая строка из таблицы добавляется
нужен цикл для перебора всех значений (запрос с DISTINCT оставит уникальные)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
ComboBox1.Clear;
with SQLQuery1 do
  begin
    SQL.Clear;
    SQL.Add('SELECT DISTINCT fio FROM table1');
    Open;
    First;
  end;
while (not SQLQuery1.Eof) do
  begin
    ComboBox1.Items.Add(SQLQuery1.FieldValues['fio']);
    SQLQuery1.Next;
  end;
1
3 / 3 / 11
Регистрация: 17.01.2013
Сообщений: 354
25.10.2014, 16:57 12
Цитата Сообщение от andrey_k3 Посмотреть сообщение
нужен цикл для перебора всех значений
Странно то, что на Delphi у меня так работало...

Также и с подсчётом количества, на Delphi так делал:

Delphi
1
2
3
4
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT COUNT(fio) As f1 FROM table1 WHERE fio="Иванов Иван Иванович"');
ADOQuery1.Open;
Label3.Caption:=IntToStr(ADOQuery1.FieldByName('f1').AsInteger);
А тут не хочет... что опять не так, подскажите, пожалуйста ?

Добавлено через 2 часа 8 минут
Конкретно вот так делаю:
Delphi
1
2
3
4
5
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT COUNT(*) As fio_c FROM table1 WHERE fio="Иванов Иван Иванович"');
SQLQuery1.Open;
SQLQuery1.First;
Label3.Caption:=IntToStr(SQLQuery1.FieldByName('fio_c').AsInteger);
Получаю ошибку:

SQLQuery1 : Field not found : "fio_c".

В Delphi так работает, гуглю капитально, везде так советуют, но у меня на Lazarus так не работает...

Добавлено через 21 час 39 минут
Последний вопрос снят, у меня SQLQuery был привязан к DBGrid, поэтому были проблемы.
0
3 / 3 / 11
Регистрация: 17.01.2013
Сообщений: 354
03.11.2014, 14:39 13
Всем привет! Если я проект приложу, сможет мне кто-нибудь подсказать ? Есть вопросы по структуре базы данных и связях между таблицами.

Добавлено через 19 часов 45 минут
Цитата Сообщение от andrey_k3 Посмотреть сообщение
db_std_cmpnts.zip (408.2 Кб, 20 просмотров)
Чё-то даже в вашем проекте не могу добавить хоть одну запись, после нажатия на Post на Navigator вроде бы всё норм, но после нажатия Refresh -- все записи исчезают. Как быть то ?
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
05.11.2014, 14:41 14
berkut_174, скачал по ссылке пример - Refresh отрабатывает без ошибок, ничего не исчезает...
0
3 / 3 / 11
Регистрация: 17.01.2013
Сообщений: 354
05.11.2014, 14:59 15
Цитата Сообщение от andrey_k3 Посмотреть сообщение
berkut_174, скачал по ссылке пример - Refresh отрабатывает без ошибок, ничего не исчезает...
Да Refresh то отрабатывает, дело не в этом. Я на Navigator жму + (добавить), заполняю поля, потом жму галку (применить изменения). Закрываю программу, заново открываю, а тех данных, которые я внёс -- НЕТ. То есть изменения вносимые мной через программу НЕ вносятся в базу. Почему так ?
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
05.11.2014, 15:06 16
подтверждение транзакции выполняется?
Delphi
1
2
SQLQuery1.ApplyUpdates;
SQLTransaction1.Commit;
0
3 / 3 / 11
Регистрация: 17.01.2013
Сообщений: 354
05.11.2014, 21:03 17
Цитата Сообщение от andrey_k3 Посмотреть сообщение
SQLQuery1.ApplyUpdates;
SQLTransaction1.Commit;
Сделал кнопульку, туда эти две команды внёс, при запуске программы вношу новую запись, жму галку, потом на кнопульку (где две команды), вылазит ошибка (см. вложения).
Миниатюры
Базы данных в Lazarus  
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
05.11.2014, 21:13 18
можно проект посмотреть?
0
3 / 3 / 11
Регистрация: 17.01.2013
Сообщений: 354
05.11.2014, 22:37 19
Цитата Сообщение от andrey_k3 Посмотреть сообщение
можно проект посмотреть?
Конечно (см. вложения).
Вложения
Тип файла: 7z test_proj.7z (110.1 Кб, 127 просмотров)
0
5 / 5 / 5
Регистрация: 15.08.2013
Сообщений: 46
06.11.2014, 07:57 20
berkut_174, Вот пример работы с SQLite db_std_cmpnts.7z
1
06.11.2014, 07:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2014, 07:57
Помогаю со студенческими работами здесь

Подключение базы данных из MS SQL Server к Lazarus
Помогите студенту, пожалуйста! Задача стоит следующая - сделать простейший интерфейс для базы...

Как в Lazarus можно сделать отчёт базы данных?
Нашёл информацию в интернете, что для этого нужен какой-то LazReport. Но его нужно установить. Как...

Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s.
всем доброго времени суток! есть у меня класс bd, массив элементов этого класса table, а вот сам...

При открытии базы данных FoxPro в приложение Delphi возникает ошибка драйвера внешней базы данных (8961)
При открытии базы данных FoxPro в приложение Delphi возникает ошибка драйвера внешней базы данных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru