SQLite3 - rozpoznanie struktury bazy danych

SQLite3 - rozpoznanie struktury bazy danych
MA
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:20
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:

Kopiuj
select * from sqlite_master

Druga pomoc:

Kopiuj
PRAGMA table_info(nazwa_tabeli)

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

MA
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:20
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.

Kopiuj
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

edytowany 1x, ostatnio: flowCRANE
flowCRANE
Wstawiaj kod w znaczniki kolorujące składnię;
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:7 miesięcy
  • Postów:6610
0

http://www.sqlite.org/pragma.html#pragma_table_info
SQLite w Delphi

i zacznij używać googla albo innej wyszukiwarki!


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
MA
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:20
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.

abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:7 miesięcy
  • Postów:6610
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)
Kopiuj
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...


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
WL
  • Rejestracja:około 21 lat
  • Ostatnio:około 2 miesiące
  • Postów:1082
0
art 4p napisał(a)

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

Kopiuj
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?

Kopiuj
SQLiteTabela.FieldByName['imie']

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

MA
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:20
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 ...

abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:7 miesięcy
  • Postów:6610
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?


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
WL
  • Rejestracja:około 21 lat
  • Ostatnio:około 2 miesiące
  • Postów:1082
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...

abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:7 miesięcy
  • Postów:6610
0
wloochacz napisał(a):

Co to za dziwactwo?

Kopiuj
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.


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
WL
  • Rejestracja:około 21 lat
  • Ostatnio:około 2 miesiące
  • Postów:1082
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?

fourfour
Idę po czipsy... :D
spartanPAGE
Będzie w sam raz do warzywnego dipu :) siadaj
flowCRANE
Proszę się rozejść - koniec seansu! :D
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 11 godzin
  • Lokalizacja:Tuchów
  • Postów:12166
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.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
MA
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:20
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.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)