Как выбрать СУБД ?

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

Сообщение Attid » 08.08.2007 15:34:27

а поиском пользоваться не учили ?
учится SQLite сюда
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение GN » 08.08.2007 16:37:47

Посмотрел я SQliteAdministrator. Нашёл много инфы о SQLite. Но перерыл очень много сайтов о подключении SQLite к Делфи/Lazarus и находил только сайты с вопросами. :(
Аватара пользователя
GN
новенький
 
Сообщения: 67
Зарегистрирован: 29.07.2007 07:35:56
Откуда: Казахстан

Сообщение debi12345 » 08.08.2007 17:25:49

Посмотрел я SQliteAdministrator. Нашёл много инфы о SQLite. Но перерыл очень много сайтов о подключении SQLite к Делфи/Lazarus и находил только сайты с вопросами. Sad

А что вы хотели в мире опен-сорса? Конечно будут одни вопросы. Чтобы какой-то волшебник все сделал, глюки вылизал - а мы бы пользовались ?

Кроме шуток, если хотите строить в дизайне ( мышью клепать) под SQlite3 - только MSEide/gui. "Там" все работает. Сам прямо сейчас пишу SQLite3 БД-прогу под ним. Полируем некоторые шероховатости.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение GN » 09.08.2007 14:33:51

Оказывается копать надо было здесь - C:\lazarus\fpc\2.0.4\source\fcl\db\sqlite

Создать базу получается:

Код: Выделить всё
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 не получается :(
Аватара пользователя
GN
новенький
 
Сообщения: 67
Зарегистрирован: 29.07.2007 07:35:56
Откуда: Казахстан

Сообщение Attid » 09.08.2007 14:51:02

Код: Выделить всё
  // хз
  dsOne.First;
  dsTwo.First;

переходит на первую запись в датасете.
в данном коде запись обсолютно не нужная наверно в показательных целях что такое есть и им можно пользоваться.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение debi12345 » 09.08.2007 16:10:21

А добавить данные с помощью Lazarus не получается
====================
Говорят же Вам - для работы с БД, тем паче SQlite3, нужен MSEgui/ide.
Если без лазаруса никак- то придется Вам на жарптичку переползти, Attid в этом спец.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение bw » 09.08.2007 17:05:49

Я работаю через http://www.yunqa.de/delphi/sqlitespy/. Видимо SQLiteAdmin.. дает что-то подобное, но я его не видел.
Lazarus не пользую работаю с SQLite из Delphi (когда то) и Python.

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Сообщение Padre_Mortius » 09.08.2007 17:12:04

debi12345 писал(а):А добавить данные с помощью Lazarus не получается


а кто мешает воспользоваться insert'ом?
Код: Выделить всё
SQLiteDataset.SQL('insert....')


А для того чтобы использовать SQLite3 необходимо установить компонент sqlite3laz. Тогда будет нужна библиотека sqlite3.dll
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение GN » 09.08.2007 18:24:54

Ничего не получается с SQLite. Буду танцевать с бубном теперь над firebird, надеюсь в интеренте есть хоть один пример с этой базой...
Последний раз редактировалось GN 09.08.2007 19:55:07, всего редактировалось 1 раз.
Аватара пользователя
GN
новенький
 
Сообщения: 67
Зарегистрирован: 29.07.2007 07:35:56
Откуда: Казахстан

Сообщение Padre_Mortius » 09.08.2007 18:46:33

GN писал(а):Ничего не получается с SQLite. Буду танцевать с бубном теперь над firebird, надеюсь в интеренте есть хоть один пример с этой базай...


А что ты хочешь от SQLite?
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение GN » 09.08.2007 19:58:15

Padre_Mortius писал(а):А что ты хочешь от SQLite?
Да ничего :) просто раньше никогда не занимался БД, и мне без разницы с чего начинать.
Аватара пользователя
GN
новенький
 
Сообщения: 67
Зарегистрирован: 29.07.2007 07:35:56
Откуда: Казахстан

Сообщение v-t-l » 09.08.2007 20:19:29

SQLite весьма неплохая СУБД. А компонентов множество - например ZeosDBO http://downloads.sourceforge.net/zeoslib/ZEOSDBO-6.6.1_beta.zip?modtime=1172471217&big_mirror=0

Протокол в ZConnection указываешь и цепляешь нужные компоненты.
v-t-l
энтузиаст
 
Сообщения: 728
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение alexs » 09.08.2007 20:53:03

GN писал(а):Буду танцевать с бубном теперь над firebird, надеюсь в интеренте есть хоть один пример с этой базой...

а что там танцевать? всё работает
в FBDataSet + UIB есть пример как работать
если что - пиши - отвечу
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Сергей Смирнов » 09.08.2007 22:05:51

Моё ИМХО такое:

SQLite может и неплохая СУБД, но очень уж своеобразная. Нормальных компонент для неё нет в природе, потому, что их просто не может быть. И всё из-за некоторой, скажем так, особенности этой СУБД - практически полного отсутствия типизации полей.

Если есть желание поизучать какой либо опенсорцный сервер БД, то, ИМХО, лучше начать с Firebird. Он довольно простой, но в тоже время полноценный сервер по сравнению с SQLite и для него есть замечательный IBExpert, который бесплатен для сограждан. Postgresql, пожалуй, с точки зрения SQL-программиса, будет получше, но он и посложнее в изучении.

Для доступа к ним в лазаре есть встроенные компоненты SQLdb. Они очень даже ничего. Будут. Когда глючить перестанут. А случится это не понятно когда, потому как была идея скрестить это дело с наработками Мартина (MSEide/gui), так что готовьте валерьянку ;)

Для доступа к Firebird также есть компоненты UIB, которые в сочетании с редактируемым датасетом от alexs, можно сказать, вполне рабочие.
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Сообщение debi12345 » 09.08.2007 22:29:49

SQLite может и неплохая СУБД, но очень уж своеобразная. Нормальных компонент для неё нет в природе, потому, что их просто не может быть. И всё из-за некоторой, скажем так, особенности этой СУБД - практически полного отсутствия типизации полей.

Если создавать поля через "CREATЕ TABLE" - то их типы легко вытаскиваются через API DLL. Но тип определяется именно типом поля при создании таблицы, а не результатом выборки. Чтобы это работало прозрачно с БД-компонентами, MSEgui делает следующее:
1) использует соглашения о точных названиях типов для "create table", чтобы потом, узнав типы через API, назначить им корректный "ft*" в FieldDefs; тип "boolean" также прекрасно работает;
2) имеет возможность явно переназначить тип поля в FiedDefs- что для табличного поля, что для произвольного выражения.

Как результат - сейчас работа с "SQlite3+компоненты" ничем не отличается от работы с другими движками. Супер - не то слово ! Только сегодня доделал БД-часть маленького, но очень интересного ( по части БД ) проекта.

Для доступа к ним в лазаре есть встроенные компоненты SQLdb. Они очень даже ничего. Будут. Когда глючить перестанут.

Это врядли скоро исправится. Потому что затык пошел на повальном использовыании Variant-типа и Variant-массивов из-за привязки к Дельфям. Lookup-поддержка - вообще необозримое будущее.

А случится это не понятно когда, потому как была идея скрестить это дело с наработками Мартина (MSEide/gui), так что готовьте валерьянку Wink

О, это повод для шуток Мартина.
Джуст упорствует в пресловутой Дельфи-совместимости до последней закорючки, причем и 20% не сделано по части копирования БД-фичей Дельфей. Мечтатель !
А серьезные баги для него Мартин находил и фиксил - но потом надоело патчей месяцами ждать, и форкнул.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Пред.След.

Вернуться в Базы данных

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

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

Рейтинг@Mail.ru