Как выбрать СУБД ?
Модератор: Модераторы
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Посмотрел я SQliteAdministrator. Нашёл много инфы о SQLite. Но перерыл очень много сайтов о подключении SQLite к Делфи/Lazarus и находил только сайты с вопросами. Sad
А что вы хотели в мире опен-сорса? Конечно будут одни вопросы. Чтобы какой-то волшебник все сделал, глюки вылизал - а мы бы пользовались ?
Кроме шуток, если хотите строить в дизайне ( мышью клепать) под SQlite3 - только MSEide/gui. "Там" все работает. Сам прямо сейчас пишу SQLite3 БД-прогу под ним. Полируем некоторые шероховатости.
- GN
- новенький
- Сообщения: 67
- Зарегистрирован: 29.07.2007 07:35:56
- Откуда: Казахстан
- Контактная информация:
Оказывается копать надо было здесь - C:\lazarus\fpc\2.0.4\source\fcl\db\sqlite
Создать базу получается:
Получается просмотреть данные из БД:
Для работы программы надо файл sqlite.dll (из программы SQLiteAdmin) почему-то новый файл sqlite3.dll не подходит. Данные я добавил с помощью программы SQLiteAdmin. А добавить данные с помощью Lazarus не получается
Создать базу получается:
Код: Выделить всё
program project1;
{$Mode ObjFpc}
{$define DEBUGHEAP}
uses
{$ifdef DEBUGHEAP}
Heaptrc,
{$endif}
{$ifdef Linux}
cmem,
{$endif}
crt,sysutils,db,SqliteDS;
var
dsTest:TSQliteDataset;
begin
{$ifdef DEBUGHEAP}
SetHeapTraceOutput('heaplog.txt');
{$endif}
dsTest:=TsqliteDataset.Create(nil);
with dsTest do
Begin
FileName:='New.db';
if FileExists(FileName) then
DeleteFile(FileName);
TableName:='NewTable';
with FieldDefs do
begin
Clear;
Add('Code',ftInteger,0,False);
Add('Name',ftString,0,False);
Add('Bool',ftBoolean,0,False);
Add('Float',ftFloat,0,False);
Add('Word',ftWord,0,False);
Add('DateTime',ftDateTime,0,False);
Add('Date',ftDate,0,False);
Add('Time',ftTime,0,False);
end;
CreateTable;
writeln('SqliteReturnString after CreateTable: ',SqliteReturnString);
Destroy;
end;
exit;
end.Получается просмотреть данные из БД:
Код: Выделить всё
program concurrencyds;
{$Mode ObjFpc}
{$define DEBUGHEAP}
uses
{$ifdef DEBUGHEAP}
Heaptrc,
{$endif}
{$ifdef Linux}
cmem,
{$endif}
crt,sysutils,SqliteDS;
var
dsOne, dsTwo: TSQliteDataset;
begin
{$ifdef DEBUGHEAP}
SetHeapTraceOutput('heaplog.txt');
{$endif}
// Инициализируем БД
dsOne := TsqliteDataset.Create(nil);
dsTwo := TsqliteDataset.Create(nil);
// Указываем название БД
dsOne.FileName := 'New.db';
dsTwo.FileName := 'New.db';
// Указываем имя таблицы
dsOne.TableName := 'NewTable';
dsTwo.TableName := 'NewTable';
// Формируем запрос
dsOne.Sql := 'SELECT Code FROM NewTable';
dsTwo.Sql := 'SELECT Name FROM NewTable';
// Выполняем запрос
dsOne.Open;
dsTwo.Open;
// хз
dsOne.First;
dsTwo.First;
WriteLn('Code: ', dsOne.FieldByName('Code').AsInteger);
WriteLn('Name: ', dsTwo.FieldByName('Name').AsString);
// Переходим на следующее поле
dsOne.Next;
dsTwo.Next;
WriteLn('Code: ', dsOne.FieldByName('Code').AsInteger);
WriteLn('Name: ', dsTwo.FieldByName('Name').AsString);
dsOne.Close;
dsTwo.Close;
dsOne.Destroy;
dsTwo.Destroy;
Readkey;
Exit;
end.Для работы программы надо файл sqlite.dll (из программы SQLiteAdmin) почему-то новый файл sqlite3.dll не подходит. Данные я добавил с помощью программы SQLiteAdmin. А добавить данные с помощью Lazarus не получается
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
Код: Выделить всё
// хз
dsOne.First;
dsTwo.First;
переходит на первую запись в датасете.
в данном коде запись обсолютно не нужная наверно в показательных целях что такое есть и им можно пользоваться.
- bw
- постоялец
- Сообщения: 359
- Зарегистрирован: 01.12.2005 10:36:23
- Откуда: Усть-Илимск
- Контактная информация:
Я работаю через http://www.yunqa.de/delphi/sqlitespy/. Видимо SQLiteAdmin.. дает что-то подобное, но я его не видел.
Lazarus не пользую работаю с SQLite из Delphi (когда то) и Python.
..bw
Lazarus не пользую работаю с SQLite из Delphi (когда то) и Python.
..bw
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
debi12345 писал(а):А добавить данные с помощью Lazarus не получается
а кто мешает воспользоваться insert'ом?
Код: Выделить всё
SQLiteDataset.SQL('insert....')А для того чтобы использовать SQLite3 необходимо установить компонент sqlite3laz. Тогда будет нужна библиотека sqlite3.dll
- GN
- новенький
- Сообщения: 67
- Зарегистрирован: 29.07.2007 07:35:56
- Откуда: Казахстан
- Контактная информация:
Ничего не получается с SQLite. Буду танцевать с бубном теперь над firebird, надеюсь в интеренте есть хоть один пример с этой базой...
Последний раз редактировалось GN 09.08.2007 19:55:07, всего редактировалось 1 раз.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
SQLite весьма неплохая СУБД. А компонентов множество - например ZeosDBO http://downloads.sourceforge.net/zeoslib/ZEOSDBO-6.6.1_beta.zip?modtime=1172471217&big_mirror=0
Протокол в ZConnection указываешь и цепляешь нужные компоненты.
Протокол в ZConnection указываешь и цепляешь нужные компоненты.
- Сергей Смирнов
- энтузиаст
- Сообщения: 595
- Зарегистрирован: 28.04.2005 13:23:25
- Откуда: Москва
- Контактная информация:
Моё ИМХО такое:
SQLite может и неплохая СУБД, но очень уж своеобразная. Нормальных компонент для неё нет в природе, потому, что их просто не может быть. И всё из-за некоторой, скажем так, особенности этой СУБД - практически полного отсутствия типизации полей.
Если есть желание поизучать какой либо опенсорцный сервер БД, то, ИМХО, лучше начать с Firebird. Он довольно простой, но в тоже время полноценный сервер по сравнению с SQLite и для него есть замечательный IBExpert, который бесплатен для сограждан. Postgresql, пожалуй, с точки зрения SQL-программиса, будет получше, но он и посложнее в изучении.
Для доступа к ним в лазаре есть встроенные компоненты SQLdb. Они очень даже ничего. Будут. Когда глючить перестанут. А случится это не понятно когда, потому как была идея скрестить это дело с наработками Мартина (MSEide/gui), так что готовьте валерьянку
Для доступа к Firebird также есть компоненты UIB, которые в сочетании с редактируемым датасетом от alexs, можно сказать, вполне рабочие.
SQLite может и неплохая СУБД, но очень уж своеобразная. Нормальных компонент для неё нет в природе, потому, что их просто не может быть. И всё из-за некоторой, скажем так, особенности этой СУБД - практически полного отсутствия типизации полей.
Если есть желание поизучать какой либо опенсорцный сервер БД, то, ИМХО, лучше начать с Firebird. Он довольно простой, но в тоже время полноценный сервер по сравнению с SQLite и для него есть замечательный IBExpert, который бесплатен для сограждан. Postgresql, пожалуй, с точки зрения SQL-программиса, будет получше, но он и посложнее в изучении.
Для доступа к ним в лазаре есть встроенные компоненты SQLdb. Они очень даже ничего. Будут. Когда глючить перестанут. А случится это не понятно когда, потому как была идея скрестить это дело с наработками Мартина (MSEide/gui), так что готовьте валерьянку
Для доступа к Firebird также есть компоненты UIB, которые в сочетании с редактируемым датасетом от alexs, можно сказать, вполне рабочие.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
SQLite может и неплохая СУБД, но очень уж своеобразная. Нормальных компонент для неё нет в природе, потому, что их просто не может быть. И всё из-за некоторой, скажем так, особенности этой СУБД - практически полного отсутствия типизации полей.
Если создавать поля через "CREATЕ TABLE" - то их типы легко вытаскиваются через API DLL. Но тип определяется именно типом поля при создании таблицы, а не результатом выборки. Чтобы это работало прозрачно с БД-компонентами, MSEgui делает следующее:
1) использует соглашения о точных названиях типов для "create table", чтобы потом, узнав типы через API, назначить им корректный "ft*" в FieldDefs; тип "boolean" также прекрасно работает;
2) имеет возможность явно переназначить тип поля в FiedDefs- что для табличного поля, что для произвольного выражения.
Как результат - сейчас работа с "SQlite3+компоненты" ничем не отличается от работы с другими движками. Супер - не то слово ! Только сегодня доделал БД-часть маленького, но очень интересного ( по части БД ) проекта.
Для доступа к ним в лазаре есть встроенные компоненты SQLdb. Они очень даже ничего. Будут. Когда глючить перестанут.
Это врядли скоро исправится. Потому что затык пошел на повальном использовыании Variant-типа и Variant-массивов из-за привязки к Дельфям. Lookup-поддержка - вообще необозримое будущее.
А случится это не понятно когда, потому как была идея скрестить это дело с наработками Мартина (MSEide/gui), так что готовьте валерьянку Wink
О, это повод для шуток Мартина.
Джуст упорствует в пресловутой Дельфи-совместимости до последней закорючки, причем и 20% не сделано по части копирования БД-фичей Дельфей. Мечтатель !
А серьезные баги для него Мартин находил и фиксил - но потом надоело патчей месяцами ждать, и форкнул.
