Pytanie o bazę danych

0

Witam
Standard - jestem nowy :) żądny wiedzy:)
Pytanie- większość z was czytając to na pewno mnie wyśmieje. Chciałbym rozpocząć przygodę z lazarusem. Znalazłem tam komponenty bazodanowe. Bawiąc się zauważyłem, że po wybraniu odpowiednich ustawień połączyłem się z bazą. Problem tkwi w tym że przed tym musiałem włączyć zewnętrzny program typu krasnal lub webserv. Jak zrobić aby sama baza odpalała, jaki darmowy komponent mógłbym wgrać żeby ewentualnie połączyć się w w/w sposób?
Z góry dziękuje za pomoc

0

Skoro jesteś tutaj nowy to pomiętaj, że pytania dotyczące podstaw programowania zadaje się w dziale Newbie; Nie wpisuj prefiksu danego języka w tytule wątku tylko uzupełniaj tagi, a także kod danego języka wstawiaj pomiędzy specjalne znaczniki kolorujące składnię;

Wracając do tematu - mało informacji podałeś - nie napisałeś jaka to baza (jaka technologia); W Lazarusie masz kilka kontrolek do obsługi baz danych - wszystkie są darmowe.

1

żeby się połączyć do bazy danych, to musisz mieć jakiś serwer baz danych dostępny (w twoim przypadku uruchamiając krasnala uruchamiasz lokalnie serwer mysql), np. Mysql, firebird, postgresql, mssql lub też skorzystać z bazy w pliku: sqlite, access (mdb).

Pozdrawiam

1

Może odpowiem obrazowo.
Zauważyłem że do odpalenia mojego programu potrzebny komputer. Czy da się zrobić program tak aby komputer sam się pojawił?

0

Paweld bardzo dziękuje za podpowiedz. Wiem że są to podstawy ale właśnie to mnie interesowało czy istnieje baza danych do której nie jest potrzebny uruchomiony zewnętrzny program. Rozumiem że mogę się połączyć z bazą .mdb bez zewnętrznych programów.

2

nie stawiałbym na mdb bo jest to przeszłość. Nawet programy w których format ten był kiedyś stosowany idą raczej w kierunku MSSQL Express. Przy programowaniu też jest problem bo czasami trzeba stosować trochę inną składnię zapytań. Różnice niby sa drobne, ale mnie osobiście bardzo to irytowało.
Osobiście jestem wielkim entuzjastą MSAccess'a od wielu lat używam go do tworzenia oprogramowania, ale do bardzo specyficznych zastosowań tj. nietypowe projekty baz danych do zastosowań desktopowych ewentualnie max 5 użytkowników sieciowych. Dobrym ruchem MS było udostępnienie bezpłatnie RunTime MSAccess 2007 (wcześniej trzeba było zakupic ODT). MSAccess 2000 wprowadzał jeszcze fajną sprawę jak projekty ADP w których zamiast mdb uzywało się MSSQL. Ponad 10 lat temu (MSAcccess 2000) napisałem przy użyciu ADP program dla pewnej instytucji w którym do dzisiaj przetwarzają kilkaset tysięcy rekordów.
Niestety MS jakoś wycofał się z ADP niby jest on dostępny, ale nie jest rozwijany.

2

Paweld bardzo dziękuje za podpowiedz. Wiem że są to podstawy ale właśnie to mnie interesowało czy istnieje baza danych do której nie jest potrzebny uruchomiony zewnętrzny program. Rozumiem że mogę się połączyć z bazą .mdb bez zewnętrznych programów.

Koledze może chodzi o bazę danych lokalną, bez konieczności instalowania dodatkowych programów/serwerów? Jeśli tak to polecam SQLite, działa bez problemu z Lazarusem. Do pracy potrzebujesz tylko pliku dll który umieszczasz np w katalogu z programem.

0

Tomek_Laz dokładnie o taką bazę mi chodzi sprawdzę zaraz SQLite. Dzięki

0

W trakcie zabawy z sqlite + lazarus natrafiłem na pewien problem.
OPIS-
W lazarusie używam takich komponentów : SQLite3Connection, SQLTransaction, SQLQuery, Datasource, DBNavigator, DBGrid. Udało mi się połączyć z bazą zrobioną w sqlite3, która nazywa się db.db
PROBLEM-
Dlaczego nie zapisuje mi wprowadzonych danych do dbgrida???Po restarcie aplikacji wyskakują mi wyłącznie dane wpisane przykładowo podczas tworzenia bazy db.db, a nie ma danych wprowadzonych przed restartem
OBRAZOWO-
baza db.db
1 / mama
2 / tata
wpisuje w dbgrid i akceptuje DBNavigator
3 / syn
4 / córka
restart lazarusa pokazuje mi wyłącznie 1 / mama, 2 / tata

0

A zapisujesz dane tj Form1.SQLTransaction1.Commit;?

0

próbowałem tego jednak nic nie pomogło, ma ktoś może jakiś pomysł jak mogę to zrobić?:(

0

Staram się coś wykombinować i wyszło mi że baza sqlite jest lock jak zrobić w sql żebyją unlock

0

Kombinowanie trochę mi zajęło ale efekt jak na razie jest zadowalający. Gdyby ktoś szukał rozwiązania:

Buttom1.click

var
SQL : String;
baza : String;
begin
SQLQuery1.Active:=false;
SQL := 'INSERT INTO moja (Nazwisko, Imie) VALUES ("%s", "%s")';
SQL := Format(SQL,[Edit1.text, Edit2.text]);
baza := 'select * from moja';
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add( SQL );
SQLQuery1.ExecSQL;
SQLQuery1.Close;
SQLTransaction1.Commit;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.add(baza);
SQLQuery1.Active:=true;
SQLQuery1.Open;

end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1