SQLite3 - rozpoznanie struktury bazy danych

0

Witam. Proszę o pomoc w rozpoznaniu struktury bazy danych w sqllite3. Chciałbym zrobić program, który rozpozna jakie są tabele i pola w wybranej bazie. Nie znam niestety sqllita, a nie znalazłem nic na temat rozpoznawania struktury bazy.

0

Pierwsza pomoc:

select * from sqlite_master

Druga pomoc:

PRAGMA table_info(nazwa_tabeli)

Więcej do szczęścia nie trzeba...

0

Dzięki, ale jako laik w tej dziedzinie znowu mam problem. Spis tabel udało mi się pobrać, ale mam nadal problem z polami poszczególnych tabel. Nie mogę w poniższym algorytmie ich wyświetlć, bo po prostu nie wiem jak.

SQLiteTabela := SQLiteBaza.GetTable('PRAGMA table_info(nazwatabeli)');

while not SQLiteTabela.EOF do
begin
  memo1.Lines.Add('co mam tutaj wpisać ?');
  SQLiteTabela.Next;
end;
     
SQLiteTabela.Free;

Mam jeszcze jedno pytanie. Jak można zobaczyć wykasowane dane z tabeli ?

dodanie znacznika <code class="delphi"> - @furious programming

0

To mi pomogłeś. :-) Nie byłoby szybciej napisać co ma się znaleźć w tym nawiasie ?
Na podanych stronach już szukałem odpowiedzi i nic nie znalazłem.

0

nie było by szybciej bo zaraz przylecisz z następnym pytaniem. Jak chcesz programować to przede wszystkim musisz zacząć używać mózgu.

Nie znalazłeś odpowiedzi? No popatrz a tam wszystko jest.

Na pytanie co tutaj mam wpisać masz przykład co się tam wpisuje

art 4p napisał(a)
SQLiteTabela := SQLiteBaza.GetTable('SELECT * FROM tabela'); //Pobieramy wszystkie dane z tabeli
Edit4.Text := SQLiteTabela.FieldByName['id']; //Do jednego okienka wklejamy wartość pola id
Edit5.Text := SQLiteTabela.FieldByName['imie']; //Analogicznie
Edit6.Text := SQLiteTabela.FieldByName['nazwisko'];

a jak się konkretnie pole nazywa masz tu

sqlite help napisał(a)

Columns in the result set include the column name, data type, whether or not the column can be NULL, and the default value for the column

No ale do tego trzeba przede wszystkim zrozumieć co do czego jest a nie przyciskać na pałę klawisze na klawiaturze w nadziei, że coś wyjdzie...

0
art 4p napisał(a)

Na pytanie co tutaj mam wpisać masz przykład co się tam wpisuje

SQLiteTabela := SQLiteBaza.GetTable('SELECT * FROM tabela'); //Pobieramy wszystkie dane z tabeli
Edit4.Text := SQLiteTabela.FieldByName['id']; //Do jednego okienka wklejamy wartość pola id
Edit5.Text := SQLiteTabela.FieldByName['imie']; //Analogicznie
Edit6.Text := SQLiteTabela.FieldByName['nazwisko'];

Co to za dziwactwo?

SQLiteTabela.FieldByName['imie']

To nie dziedziczy z TDataSet?
Sprawdziłem, nie dziedziczy... eee to lipa ;-)

0

Dziękuję za tak miłą odpowiedź, już sobie poradziłem.

Jeżeli już tak tryskasz wiedzą to może byś jeszcze napisał coś na temat, jak mogę zobaczyć skasowane dane z bazy. Po wykasowaniu dane są fizycznie w bazie, ale już ich nie widać przy zapytaniu select ...

0

to chyba normalne, że skasowanych danych nie widać w wyniku zapytania select. W końcu po to się je kasuje. Chcesz je mieć w select to ich nie kasuj. BTW są do tego narzędzia ale trochę kosztują więc kasa na ławę i masz załatwiony problem.

@wloochacz wyjaśnisz sens Twojego komentarza?

1
abrakadaber napisał(a):

@wloochacz wyjaśnisz sens Twojego komentarza?

Żeby zrozumieć sens mojego komentarza, trzeba wiedzieć czym jest i jak działa TDataSet; skoro o to pytasz, to faktycznie nie widzę sensu...

0
wloochacz napisał(a):

Co to za dziwactwo?

SQLiteTabela.FieldByName['imie']

To nie dziedziczy z TDataSet?

Sprawdziłem, nie dziedziczy... eee to lipa ;-)

wloochacz napisał(a):

Żeby zrozumieć sens mojego komentarza, trzeba wiedzieć czym jest i jak działa TDataSet; skoro o to pytasz, to faktycznie nie widzę sensu...

I jak ta wiedza ma się mieć do pierwszego cytatu? Czy jak wiem jak działa silnik odrzutowy ale mam rower a nie odrzutowiec to ta wiedza cokolwiek zmieni? Czy z tą wiedzą jak się nażre kapusty/fasoli i jeżdżąc na rowerze będę puszczał głośne bąki (namiastka silnika odrzutowego) to będę szybciej jeździł?

Wiem, że masz wiedzę, której pewnie niejeden Ci pozazdrości (na plcd nawet fanklub masz) ale wstawianie kawałków w stylu "co to za %^$&*. Przecież to tak ma być. A nie jednak nie" jest poniżej poziomu. W szczególności w wątku, gdzie pytacz ma zerową wiedzę i nawet z przykładów nie potrafi złożyć działającego kodu.

0

Zapytałem grzecznie o to dziwactwo, bo po prostu go nie znałem. Taki zapis FieldByName zapalił u mnie automatycznie czerwoną lampkę, ze względu na niezgodność ze standardem jakim de-facto jest w Delphi TDataSet. A to dlatego, że implementacja TDataSet przewyższa umiejętności domorosłych mastacha, co sugeruje kiepską jakoś kodu takiej biblioteki.
I tyle. Co do reszty pozwól, że nie skomentuję - podobnie jak metafory, bo moim zdaniem taka wiedza zmienia podejście do tematu i to znacznie.
Co się ciskasz?

0

Panom przypominam, że ten wątek ma służyć pytaczowi, a nie prywatnym dyskusjom na temat przydatności czyichś wypowiedzi; Przenieście się z takimi dyskusjami do komentarzy, albo na PM;

Szanujcie pytacza, który potrzebuje rozwiązania problemu, którego nie umie rozwiązać, dlatego nie róbcie off-topu w postach.

0

Pisząc na początku, że nie znam sqlite to znaczy, że go nie znam i dlatego pytam. Może jesteś dobrym programistom, ale z czytaniem u ciebie jest na bakier. Potrzebowałem coś zrobić na szybko o czym nie miałem zielonego pojęcia, dlatego też zamieściłem swoje pytanie na tym forum. Nie chciałem zostać od razu wybitnym programistą, takim za jakiego ty się pewnie uważasz abrakadaber.

Widzę, że wszystkie rozumy pozjadałeś i stałeś się zgorzkniałym typem, jakich wielu na tego typu forach. Masz takie parcie żeby o tobie na forach słyszeli, że tylko szukasz mniej doświadczonych ludzi żeby komuś dokopać. Jak nie chcesz, albo nie potrafisz na jakieś pytanie odpowiedzieć to nie wchodź na tą stronę. Jak podajesz denne przykłady to też nie dziw się, że ktoś co w tym nie siedzi to nie będzie wiedzieć, ale przecież o to tobie chodzi.

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