2010-03-11 11 views
7

Mam problemy podczas próby wstawienia plików do bazy danych programu SQL Server. Postaram się podzielenie go najlepiej jak tylko mogę:Jak przechowywać i pobierać obrazy przy użyciu programu SQL Server (Server Management Studio)

  1. Jakie dane powinienem używać do przechowywania plików graficznych (JPEG/PNG/GIF/etc)? Obecnie mój stół korzysta z typu danych image, ale jestem ciekawy, czy lepszym rozwiązaniem byłby varbinary.

  2. Jak mam wstawić obraz do bazy danych? Czy program Microsoft SQL Server Management Studio ma wbudowane funkcje umożliwiające wstawianie plików do tabel? Jeśli tak, jak to zrobić? W jaki sposób można to zrobić za pomocą formularza HTML z PHP obsługi danych wejściowych i umieszczania go w tabeli?

  3. Jak mogę pobrać obraz z tabeli i wyświetlić go na stronie? Rozumiem, jak WYBRAĆ zawartość komórki, ale jak mam to zrobić, tłumacząc to na obraz. Czy musiałbym mieć nagłówek (Content type: image/jpeg)?

nie mam problemu robi żadnej z tych rzeczy z MySQL, ale środowisko SQL Server jest nadal dla mnie nowe, a ja pracuję nad projektem dla mojej pracy, która wymaga zastosowania procedur przechowywanych, aby pobrać różne dane.

Każda pomoc jest doceniana.

Odpowiedz

5

Typ image jest przestarzały, więc nie należy go używać.

Krótka odpowiedź to użycie typu FILESTREAM, jeśli jest to SQL 2008 lub varbinary(max), jeśli jest to rok 2005 lub wcześniejszy.

Lepszą odpowiedzią jest użycie typu FILESTREAM, jeśli jest to SQL 2008, a nie przechowywanie obrazów w bazie danych w ogóle. Bazy danych nie są zbudowane dla tego typu rzeczy, a rzucanie BLOB-ów może znacznie obniżyć wydajność. FILESTREAM rozwiązuje problem przez zapisanie rzeczywistych danych w systemie plików; wszystko inne jest rozwiązaniem poniżej standardu.

Jeśli chodzi o sposób odczytywania i zapisywania w kolumnie varbinary, jeśli zdecydujesz się na takie nieidealne podejście, będzie ono reprezentowane jako strumień w PHP. To właśnie dostajesz z zapytania jako wartość kolumny i uważam, że to właśnie musisz wprowadzić jako parametr.

+0

Korzystamy z programu SQL Server 2008, ale na liście nie ma typu "FILESTREAM". Jeśli 'varbinary' działa, to będzie musiało to zrobić. Głównym problemem jest wymyślenie sposobu wstawienia obrazu do tabeli. Dziękuję za uwagę, że typ obrazu jest przestarzały, ponieważ pochylałem się w kierunku tej trasy.:) –

+0

@Joe Majewski: FILESTREAM jest dostępny we wszystkich wersjach SQL Server 2008. Nie ** nie ** używaj 'varbinary' gdy masz FILESTREAM. Niekoniecznie zobaczysz go w menu rozwijanym - zapoznaj się z przewodnikiem dla początkujących tutaj: http://msdn.microsoft.com/en-us/library/bb933995.aspx – Aaronaught

+0

Dobrze, patrzę na to dobrze teraz. Uświadom sobie, że pracuję nad kopią "prawdziwej" bazy danych, ponieważ nie mam uprawnień dostępu do wszystkich danych, więc mam nadzieję, że utworzenie bazy danych włączonej funkcji filestream nie spowoduje problemów, gdy ta zostanie uruchomiona. –

0

Istnieje wkład zbiorczy akceptowany przez linię komend bcp.exe. Przeczytaj this, aby uzyskać więcej informacji na temat wstawiania danych binarnych do MS SQL przez t-sql.

+0

Och, bardzo podoba mi się sposób działania tego narzędzia, ale nie jest to dokładnie to, czego potrzebuję. Zasadniczo pracuję nad aplikacją dla Northern Illinois University, która przechowuje obraz każdego ucznia, który mieszka w akademikach. Gdy uczeń próbuje się zameldować w recepcji, osoba pracująca może stwierdzić, że w rzeczywistości jest uczniem, sprawdzając, czy zdjęcie pasuje. Nie będę wstawiać żadnego z tych obrazów w bazie danych. Po prostu muszę mieć możliwość wstawienia pojedynczego obrazu do celów testowych, aby upewnić się, że mogę go poprawnie pobrać. –

+0

Czy istnieje wkładka, która działa tylko z jedną ścieżką na dysku twardym? –

Powiązane problemy