Jak zapisywać w bazie sqlite multimedia (filmy i bitmapy) oraz pliki rtf?

0

Witam,
Korzystam z SQLITE i delphi.
Jak zapisywać w bazie sqlite multimedia (filmy i bitmapy)? I jeszcze jedno : jak zapisać i odczytać pliki .rtf (z zmienionym kolorem fontów i wklejonymi obrazkami)?
Pozdrawiam

0

Nie jestem ekspertem od SQL'a oraz SQLite w ogóle. Ale jak sobie coś tam kiedyś krótko modziłem z tą biblioteką to natrafiłem na taki przykład: http://www.shokhirev.com/nikolai/programs/code/SQLiteInterface.html - także pogoogluj zanim zapytasz, bo jak byś cniał to byś też na to trafił. Ja sobie ułatwiłem wprawdzie sprawę podając nazwę projektu czyli picturedb, ale bez tego pewnie jakoś też można tam trafić, tylko trzeba chcieć.

0

Żeby przechowywać takie dane w tabelach stosuje się typ blob:
http://www.sqlite.org/datatype3.html

Teoretycznie (nie sprawdzałem) powinno wystarczyć otworzenie pliku ze switch'ami "rb" i przewalenie wszystkich danych z tego pliku do bloba.

0

Sorry nie bardzo rozumiem fragmentu:

otworzenie pliku ze switch'ami "rb"

W stosunku do pierwszej odpowiedzi:

ten programik do którego dałeś link, miałem już wcześniej. Chodzi o to, że mnie interesuje coś innego, chcę w bazie w jednej komórce tablicy przechowywać dowolną ilość plików graficznych, a pod inną filmów .
Jeżeli właściwym typem jest BLOB, to wiele mi wytłumaczyło.

0

rb - read, binarnie

W relacyjnych bazach danych lepiej wielu plików nie wsadzać w jednego BLOBa, przecież możesz utworzyć dodatkową tabelę z plikami.

tab1

id nazwa klucz obcy z tab2
1 Filmy 54
2 Pliki graficzne 65

tab2

id dane binarne pliku (blob) nazwa pliku
54 0110011010110... nsfw.avi
54 0110011010110... nsfw2.mpg
65 0110011010110... jacek.jpg
65 0110011010110... jola.png
65 0110011010110... jadwiga.jpg

Jak widać, krotkom z tab1 przyporządkowane są indekst z tab2, tym sposobem każdy rekord z tab1 może mieć wiele plików.

0

A w jaki sposób wprowadzić plik do BLOBA? Chodzi mi o plik .rtf, i avi,
plik rtf zapisuję na dysku procedurą SAVETOFILE z JVRichedit
w jaki sposób wprowadzić go do bazy

JVRIchedit1.savetofile('c:\jakisplik.rtf');
SQLiteBaza.ExecSQL('INSERT INTO tabela VALUES("'+ edit1.text +'","' + Edit2 .Text + '", "' + CO TUTAJ MA BYĆ? + '")');

1

Już napisałem, musisz otworzyć plik i czytać go binarnie znak po znaku i cały ciąg potem wsadzasz w miejsce "CO TUTAJ MA BYĆ?". Chociaż w sumie są jakieś funkcje w bibliotece SQLite do obsługi blobów, poszperaj :)

http://www.yolinux.com/TUTORIALS/SQLite.html
Masz tam kod zaczynający się od komentarza w 52 linijce:

// Insert blob data into database

0

jaką funkcją otworzyć plik binarnie?

0

Czy Ty szukasz czasem odpowiedzi na swoje pytania?

http://www.delphibasics.co.uk/Article.asp?Name=Files
Sekcja

Reading and writing to pure binary files

Dużo szybciej i wydajniej byś pracował gdybyś najpierw nauczył się szukać.

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