Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lazarus
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.73/93: Рейтинг темы: голосов - 93, средняя оценка - 4.73
riv94
64 / 64 / 29
Регистрация: 13.02.2011
Сообщений: 391
#1

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

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

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

-Как быть в Лазарусе? Устанавливается ли подобный движок, при установке Лазарус?
-Если да, то как его прописывать?
-Есть ли книжки по поводу написания баз данных в Лазарусе? Если есть киньте пожалуйста ссылку и саму книжку Буду очень признателен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2011, 15:03
Ответы с готовыми решениями:

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

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

База Данных в Lazarus
Добрый день, подскажите пожалуйста какой компонент в Lazarus, заменяет...

База данных в lazarus
Здравствуйте, при редактировании базы данных с помощью компоненты TDBEdit,...

База данных в Lazarus
У меня есть БД в IBexpert, мне нужно создать приложение в Lazarus'е для работы...

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

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

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

Добавлено через 11 минут
UPD: решение здесь http://freepascal.ru/forum/viewtopic.php?f=31&t=9638
0
andrey_k3
128 / 128 / 41
Регистрация: 17.10.2013
Сообщений: 333
20.10.2014, 08:20 #9
berkut_174, VARCHAR
1
berkut_174
2 / 2 / 11
Регистрация: 17.01.2013
Сообщений: 318
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
andrey_k3
128 / 128 / 41
Регистрация: 17.10.2013
Сообщений: 333
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
berkut_174
2 / 2 / 11
Регистрация: 17.01.2013
Сообщений: 318
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
berkut_174
2 / 2 / 11
Регистрация: 17.01.2013
Сообщений: 318
03.11.2014, 14:39 #13
Всем привет! Если я проект приложу, сможет мне кто-нибудь подсказать ? Есть вопросы по структуре базы данных и связях между таблицами.

Добавлено через 19 часов 45 минут
Цитата Сообщение от andrey_k3 Посмотреть сообщение
db_std_cmpnts.zip (408.2 Кб, 20 просмотров)
Чё-то даже в вашем проекте не могу добавить хоть одну запись, после нажатия на Post на Navigator вроде бы всё норм, но после нажатия Refresh -- все записи исчезают. Как быть то ?
0
andrey_k3
128 / 128 / 41
Регистрация: 17.10.2013
Сообщений: 333
05.11.2014, 14:41 #14
berkut_174, скачал по ссылке пример - Refresh отрабатывает без ошибок, ничего не исчезает...
0
berkut_174
2 / 2 / 11
Регистрация: 17.01.2013
Сообщений: 318
05.11.2014, 14:59 #15
Цитата Сообщение от andrey_k3 Посмотреть сообщение
berkut_174, скачал по ссылке пример - Refresh отрабатывает без ошибок, ничего не исчезает...
Да Refresh то отрабатывает, дело не в этом. Я на Navigator жму + (добавить), заполняю поля, потом жму галку (применить изменения). Закрываю программу, заново открываю, а тех данных, которые я внёс -- НЕТ. То есть изменения вносимые мной через программу НЕ вносятся в базу. Почему так ?
0
andrey_k3
128 / 128 / 41
Регистрация: 17.10.2013
Сообщений: 333
05.11.2014, 15:06 #16
подтверждение транзакции выполняется?
Delphi
1
2
SQLQuery1.ApplyUpdates;
SQLTransaction1.Commit;
0
berkut_174
2 / 2 / 11
Регистрация: 17.01.2013
Сообщений: 318
05.11.2014, 21:03 #17
Цитата Сообщение от andrey_k3 Посмотреть сообщение
SQLQuery1.ApplyUpdates;
SQLTransaction1.Commit;
Сделал кнопульку, туда эти две команды внёс, при запуске программы вношу новую запись, жму галку, потом на кнопульку (где две команды), вылазит ошибка (см. вложения).
0
Миниатюры
Базы данных в Lazarus  
andrey_k3
128 / 128 / 41
Регистрация: 17.10.2013
Сообщений: 333
05.11.2014, 21:13 #18
можно проект посмотреть?
0
berkut_174
2 / 2 / 11
Регистрация: 17.01.2013
Сообщений: 318
05.11.2014, 22:37 #19
Цитата Сообщение от andrey_k3 Посмотреть сообщение
можно проект посмотреть?
Конечно (см. вложения).
0
Вложения
Тип файла: 7z test_proj.7z (110.1 Кб, 81 просмотров)
Zhanat1987
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2014, 07:57

Lazarus Сортировка в базе данных
Хочу изучать программирование на лазарусе, выбрал ее так как она open sourse...

Визуализация аналоговых данных в Lazarus
Приветствую всех. Случилось так, что по работе поручили написать одну...

Lazarus и База Данных SQLite
Здравствуйте, хотел начать изучение БД + Лазарус и тут сразу же назойливая...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru