Работа с SQLQuery

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Работа с SQLQuery

Сообщение kosteek » 28.07.2008 11:52:03

Доброго дня суток уважаемые гуру!

На днях узнал о существовании лозаруса, до этого работал на делфи. Моя задача переписать программу из делфи на лозарус. Работа с базой Access и/или dBase.

На форму бросаю

ODBCConnection1
SQLQuery1
SQLTransaction1
Datasource1

------------------------------------------------------
Параметры ODBCConnection1

Driver <--> Microsoft dBase Driver (*.dbf)
Params <--> DBQ=d:\db\
Transactions <--> SQLTransaction1
------------------------------------------------------

------------------------------------------------------
Параметры SQLQuery1

DataBase <--> ODBCConnection1
DataSource оставляю пустым
Transactions <--> SQLTransaction1
------------------------------------------------------

------------------------------------------------------
Параметры SQLTransaction1

DataBase <--> ODBCConnection1
------------------------------------------------------

------------------------------------------------------
Параметры Datasource1

DataSet <--> SQLQuery1
------------------------------------------------------

Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
Datasource1.Enabled:=True;
ODBCConnection1.Connected:=True;
sqlquery1.SQL.Clear;
sqlquery1.SQL.Add('select * from "cracks.dbf"');
sqlquery1.open;
end;



Вопрос: когда в sqlquery1 параметр ReadOnly:=True запрос выполняется, а при False выдает ошибку при просмотре, добавлении, изменении. Работаю под Windows XP SP2.

Прошу привести пример и описание по работе с sqlquery и SQLTransaction.

З.Ы. По данному вопросу прошерстил весь гугл и форум, кое-что понял но хотелось полного разъяснения по данному вопросу. В делфи было по-проще.
kosteek
постоялец
 
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Re: Работа с SQLQuery

Сообщение Сергей Смирнов » 28.07.2008 14:17:32

Боюсь, что все эти компоненты -- для "взрослых" баз данных. Для dbf есть TDBF (на вкладке DataAccess), для Access-а ничего нету. Работа через ODBC считается пока глючной.
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Re: Работа с SQLQuery

Сообщение kosteek » 28.07.2008 16:50:21

Спасибо!
У меня следующий вопрос:

Я не работал ни разу с базами firebird, объясните как создать базу, что нужно еще установить (драйвера и т.п.) или какие длл нужно подключить? И самое главное хочу дабится ответа на вопрос: Прошу привести пример и описание по работе с sqlquery и SQLTransaction для работы с базой firebird и желательно подробней и пошагово.
kosteek
постоялец
 
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Re: Работа с SQLQuery

Сообщение m_guest » 28.07.2008 17:21:51

Для создания баз FB лучше IBExpert не найти.
Можно скачать здесь
(17,4 Мб)
Для работы с FB лучше использовать связку компонент UIB/FBDataSet
//Надеюсь, коллеги добавят подробностей :)
m_guest
постоялец
 
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Re: Работа с SQLQuery

Сообщение kosteek » 28.07.2008 17:43:55

Жду дальнейших разъяснений, спасибо m_guest. И еще, приложение хочется кроссплатформенное, для ubuntu 7.10 что нужно будет установить? :roll:
kosteek
постоялец
 
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Re: Работа с SQLQuery

Сообщение m_guest » 28.07.2008 17:52:10

Если кросс-платформенное, то для работы с базами FB подойдет FlameRobin , здесь : http://flamerobin.sourceforge.net/index.php
m_guest
постоялец
 
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Re: Работа с SQLQuery

Сообщение alexs » 28.07.2008 22:11:32

IBExpert - в линуксе прекрасно работает.
Для FBDataSet в исходниках есть небольшая демка. Если будут вопросы спрашивай. Постараюсь ответить.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Работа с SQLQuery

Сообщение Vadim » 29.07.2008 07:05:27

kosteek
На счёт DLL'ек.
Под винды нужна будет клиентская DLL'ка(и):
- fbclient.dll (библиотека основных функций) обязательно
Если планируется однопользовательская БД, то можно использовать однопользовательский вариант FireBird в виде библиотеки fbembed.dll, ib_util.dll. Работает и как сервер и как клиентская библиотека одновременно. Плюс к этому firebird.msg и (если используется версия 2.х) icudt30.dll, icuin30.dll, icuin30.dll.
Дополнительно:
- intl\ibintl.dll нужна обязательно, если БД будет содержать информацию не только на английском языке :)
- каталог UDF со всеми DLL'ами, если в запросах будут использоваться дополнительные функции типа тангенса, преобразования регистра символов, получение правых-левых-средних частей символьных выражений, ну и тому подобное...
Для Линукс соответствующие библиотеки будут иметь расширение .SO и копируются в традиционные места их обитания (например в /usr/lib :) )
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Работа с SQLQuery

Сообщение kosteek » 29.07.2008 13:02:55

To: Vadim
Для многих будет полезно если вы собирете длл в архив и выложите его. :D

To: m_guest
Скачал (триал), установил, без установки сервера не создаст базу, или нужны длл. :?
По FlameRobin когда установлю отвечу.

To: alexs
Плиз выложи IBExpert под линукс.

З.Ы. Под словом "выложи" имею ввиду ссылку или сам файл.
kosteek
постоялец
 
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Re: Работа с SQLQuery

Сообщение Vadim » 29.07.2008 13:09:44

kosteek писал(а):Для многих будет полезно если вы собирете длл в архив и выложите его.

Вообще-то этот самый архив уже есть в дистрибутиве FireBird. Причём именно той в
ерсии, какая и у сервера БД, что, согласитесь, играет далеко не маленькую роль. :)
kosteek писал(а):Скачал (триал), установил, без установки сервера не создаст базу...
По FlameRobin когда установлю отвечу.

Будет то же самое. :) При использовании любой программы без сервера никак не обойтись, т.к. только он ведёт всю работу с данными и их пользователями. :)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Работа с SQLQuery

Сообщение kosteek » 29.07.2008 17:40:04

Vadim писал(а):Будет то же самое. :)


:D Уже понял.

Vadim писал(а):При использовании любой программы без сервера никак не обойтись, т.к. только он ведёт всю работу с данными и их пользователями. :)


Понятно. Скачаю FireBird.
Если нужно перенести клиентскую часть на другую машину которая не в сети, на нее нужно обязательно установить серверную часть?
kosteek
постоялец
 
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Re: Работа с SQLQuery

Сообщение Vadim » 29.07.2008 19:11:50

kosteek писал(а):Если нужно перенести клиентскую часть на другую машину которая не в сети, на нее нужно обязательно установить серверную часть?

Если нет доступа по сети к машине-серверу, то да, нужно. Но можно несколько схитрить - поставить на ту, бессетевую, машину однопользовательскую версию FirBird, которая называется Embeded. Выгода от этого прямая - если программа не работает, то сервер не болтается в памяти зря отнимая оную. Впрочем если памяти на компе много, гигабайт например, то лучше всё-же поставить сам сервер, т.к. при этом появится возможность поупражняться в работе с сервером через специальную утилиту - isql (она идёт в комплекте с FireBird), с помощью которой можно хорошо и качественно потренироваться в изучении языка SQL, т.к. ответы и все изменения сервера от SQL команд можно тут же и посмотреть. Тоже самое можно и делать с помощью любой программы управления - FlameRobin или IBExpert.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Работа с SQLQuery

Сообщение m_guest » 29.07.2008 19:31:45

kosteek писал(а):BExpert под линукс.

Под Linux IBExpert надо запускать, используя Wine: здесь
----
Версия Wine сейчас перевалила за единицу, так что в статье ссылка на версию 0.9.5 несколько устарела :)
m_guest
постоялец
 
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Re: Работа с SQLQuery

Сообщение kosteek » 30.07.2008 13:25:11

m_guest спасибо за ссылочку.

В форуме нашел по firebird http://www.freepascal.ru/forum/viewtopic.php?f=5&t=2177
kosteek
постоялец
 
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Re: Работа с SQLQuery

Сообщение kosteek » 01.08.2008 09:01:54

Начал переносить данные из dbf в базу firebird. И тут проблемка возникла: данные в dbf кодировкой OEM, как можно конвертнуть в UTF-8 или ansi?
kosteek
постоялец
 
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42

Рейтинг@Mail.ru