Grafika w bazie danych

0

Chcę zapisać w bazie danych obrazek tak jak jest w przykładowym pliku biolife.db. Jest to baza BDE. I moje pytanie jest takie : Czy można zapisać grafikę w takich bazach jak MySQL, SQLite, czy muszę korzystać z BDE? Oraz czy można zmusić by MySQL pracowała lokalnie. Oczywiście chodzi o Delphi.

0

A moze kilka słów więcej :/ Bo chcę to na lokalnej bazie zrobić.

0

Najlepiej:
Kodujesz plik poprzez Base64, otrzymany string wrzucasz do bazy danych.

0
maxiu1989 napisał(a)

A moze kilka słów więcej :/ Bo chcę to na lokalnej bazie zrobić.

ale co więcej? Określasz jaki SZBD, potem w jego dokumentacji szukasz czy ma bloby, jak się tworzy tabelę z blobami itp. Następnie szukasz czym byś się z wybrany SZBD łączyć z delphi i szukasz jak tym czymś obsłużyć bloby. Ot cała filozofia. Wykaż chociaż odrobinę zaangażowania (NAPISANIE POSTA NA FORUM SIĘ NIE LICZY!!)) a nie czekaj aż ktoś zrobi wszystko za ciebie

0

Żadna filozofia, ale teraz wiem ze to są BLOB'Y a zawsze się zastanawiałem co to jest. A pytam na forum bo oczekuję odpowedzi w stylu np. jaka metoda jest najlepsza, lub jakie się zwykło stosować. Jeśli będę wiedzieć czego mam szukać to to znajde bez problemu.

Ciekawi mnie też jak powstała przykładowa baza BDE, która jest w delphi (biolife.db). Tam są obrazki (rybki). Kolega wyżej napisał że można za pomocą Base64... niewątpię, że można, ale mam wątpliwości czy to jest dobra metoda :O.

Kto by pomyślał SQLite ma BLOB'a, ale wyskoczyło mi ze jpg przekracza "size limit" :( Można to jakość obejść?

0
maxiu1989 napisał(a)

Żadna filozofia, ale teraz wiem ze to są BLOB'Y a zawsze się zastanawiałem co to jest. A pytam na forum bo oczekuję odpowedzi w stylu np. jaka metoda jest najlepsza, lub jakie się zwykło stosować. Jeśli będę wiedzieć czego mam szukać to to znajde bez problemu.
ale tu nie ma najlepszej metody - generalnie są tylko dwie - albo w bazie albo w systemie plików a w bazie tylko "namiar" na plik.

Ciekawi mnie też jak powstała przykładowa baza BDE, która jest w delphi (biolife.db). Tam są obrazki (rybki).
no ktoś (wtedy jeszcze) z ekipy Borlanda siadł i przygotował bazę i przykładowe kody, które z niej korzystały.

Kolega wyżej napisał że można za pomocą Base64... niewątpię, że można, ale mam wątpliwości czy to jest dobra metoda :O.
Jakieś kombinacje w kodowanie pliku w base64 i zapisywanie jako zwykły string to zwykłe marnotrawstwo miejsca i dodawanie sobie roboty

Kto by pomyślał SQLite ma BLOB'a, ale wyskoczyło mi ze jpg przekracza "size limit" :( Można to jakość obejść?
http://www.sqlite.org/limits.html jakoś mi się wierzyć nie chce, że przekroczyłeś rozmiar 1GB pliku. Obstawiał bym, że próbujesz w jakiś dziwny sposób załadować ten obrazek no ale bez kodu to sobie można...

0

Używam:
SQLiteTabela.FieldAsBlob(ss);

gdzie składnia dla FieldAsBlob jest taka:
FieldAsBlob( I: Cardinal): TMemoryStream;

I moje pytanie:
Jak zapisać ciąg znaków odczytany z bazy do zmiennej Cardinal, zawsze mi wywala błąd że jest to string :(
ss to jest moj string odczytany z tabeli.

PS. gdzies kiedyś w necie widziałem że ktoś robił uchwyt i zapisywał do Cardinal, ale nie potrafie tego odszukać.

0

a jak chcesz wsadzić ciąg znaków do zmiennej typu cardinal???

0

Nie bardzo wiem właśnie xD ale skoro jest taka składnia...

FieldAsBlob( I: Cardinal): TMemoryStream;

Nie wiem co z tym Cardinalem zrobić, rozumem że to jest zmienna w której jest moje zdjęcie i zostaje przerobiona na MemoryStream, później streama ładuje do obrazka.

1

Nie - I to jest numer pola (licząc od 0), które jest blobem. Zawartość pola dostajesz w MemoryStream'ie, który zwraca ta metoda

0

No tak w sumie logiczne. Dzięki, zabieram się do testowania :)

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