Benutzer mit den meisten Antworten
SQLite Anhang Speichern

Frage
-
Hallo
Ich habe mal eine kleine Frage. Wie wird die Tabelle für einen Anhang erstellt?
Sollte ich da eine TEXT Spalte nehmen wo der Link zu dieser Datei Steht oder gibt es eine Andere möglichkeit?
Als Anhang sollen Bilddateien, Word Dateien, Excel Dateien und PDF Dateien gespeichert werden.
Wie wird sowas normal gelöst?
Gruß
Matthias
Antworten
-
Hallo Matthias,
möglich wäre es auch einfach alles in der DB abzuspeichern. Da wären dann also der Dateiinhalt als Spalte, vermutlich der Dateiname und ggf. noch ein paar Metainfos wie das Erstelldatum. Wenn alles in der DB liegt hat das ein paar Vorteile, beispielsweise bei der Verteilung der Rechenlast, sodass du die DB problemlos über mehrere Rechner verteilen kannst. Auch lassen sich Zugriffsrechte manchmal einfacher implementieren.
Andererseits sehe ich es als legitim an die Dateien auf der Festplatte zu speichern. Aber immer mit dem komplexeren Verwaltungsaufwand im Hinterkopf.
Viele Grüße, Tom Lambert - MVP, MCC und MSP
Wozu Antworten markieren und Posts bewerten? Klicke hier
Nützliche Links: .NET Quellcode | C#/VB.NET Konverter | GitHub Forum Samples | Account bestätigen (Verify Your Account)
Ich: Webseite | Facebook | Twitter | Code Snippets | GitHub- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 20. Februar 2017 14:19
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 1. März 2017 14:23
-
Beachte bitte das SQLite im Grunde eine SingelUser DB ist. Von mehren Clients auf die DB zugreifen kann zu Problemen führen und muss entsprechen behandelt werden. Um die Zugriffszeiten zu minimieren würde ich das File selbst nicht in die DB legen. Es ist immer sinnvoller nur eine Information pro Spalte anzulegen, z.B. könnte das Erstellungsdatum als Tick (long) abgespeichert werden damit kannst Du es wieder einfach auslesen.
Ob man nun Dateien in einem Blob speichert ist Geschmackssachen und muss jeder für sich selbst entscheiden.
Zu SQLite und MultiUser habe ich hier einen interessanten Thread gefunden Link
Gruß, Thomas
Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 20. Februar 2017 14:19
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 1. März 2017 14:23
Alle Antworten
-
Hallo,
wie man es löst bleibt ganz Dir überlassen und kommt drauf an was Du willst.
Ich mache das immer so das ich mehrere Spalten anlege Link, Name ohne Erweiterung und vielleicht auch noch das Alt Tag für Bilder. Kommt halt immer drauf an.
Gruß, Thomas
Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
-
Hallo Matthias,
möglich wäre es auch einfach alles in der DB abzuspeichern. Da wären dann also der Dateiinhalt als Spalte, vermutlich der Dateiname und ggf. noch ein paar Metainfos wie das Erstelldatum. Wenn alles in der DB liegt hat das ein paar Vorteile, beispielsweise bei der Verteilung der Rechenlast, sodass du die DB problemlos über mehrere Rechner verteilen kannst. Auch lassen sich Zugriffsrechte manchmal einfacher implementieren.
Andererseits sehe ich es als legitim an die Dateien auf der Festplatte zu speichern. Aber immer mit dem komplexeren Verwaltungsaufwand im Hinterkopf.
Viele Grüße, Tom Lambert - MVP, MCC und MSP
Wozu Antworten markieren und Posts bewerten? Klicke hier
Nützliche Links: .NET Quellcode | C#/VB.NET Konverter | GitHub Forum Samples | Account bestätigen (Verify Your Account)
Ich: Webseite | Facebook | Twitter | Code Snippets | GitHub- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 20. Februar 2017 14:19
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 1. März 2017 14:23
-
Danke für die Antwort
Also sollte ich es so Lösen das die Links in der DB gespeichert sind und die Dateien selber z.b. auf der FritzNas gespeichert werden.
Meine Idee
Ich lese z.b. auf FritzNas ein verseichnis an z.b. "Dateien"
da soll dann die Kopie gespeichert werden mit Dateiname "Anhangbezeichnung_Datum_Alterdateiname.Endung"
und in der DB Selber steht dann nur dieser Link dran.
Wir das so gemacht? Wäre das Richtig so?
Gruß
Matthias
-
Hallo Matthias,
ein wirkliches richtig/falsch gibt's hier nicht. Da du von FritzNAS schreibst gehe ich mal von einer eher kleinen, lokalen Umgebung mit wenigen Benutzern aus. Da dürfte dieses Vorgehen das beste sein.
Der Dateiname kann dir an sich auch egal sein, Hauptsache er ist eindeutig. Das Erstelldatum etc. (sofern du es brauchst) würde ich allerdings in eine extra Spalte in der DB packen.
Bei mehr Benutzern, einer größeren Datenbank und mehr Last dagegen würde ich alles in die DB packen (inklusive den Datei-Bytes).
Viele Grüße, Tom Lambert - MVP, MCC und MSP
Wozu Antworten markieren und Posts bewerten? Klicke hier
Nützliche Links: .NET Quellcode | C#/VB.NET Konverter | GitHub Forum Samples | Account bestätigen (Verify Your Account)
Ich: Webseite | Facebook | Twitter | Code Snippets | GitHub- Bearbeitet Tom Lambert (Koopakiller)Moderator Freitag, 17. Februar 2017 14:02
-
Beachte bitte das SQLite im Grunde eine SingelUser DB ist. Von mehren Clients auf die DB zugreifen kann zu Problemen führen und muss entsprechen behandelt werden. Um die Zugriffszeiten zu minimieren würde ich das File selbst nicht in die DB legen. Es ist immer sinnvoller nur eine Information pro Spalte anzulegen, z.B. könnte das Erstellungsdatum als Tick (long) abgespeichert werden damit kannst Du es wieder einfach auslesen.
Ob man nun Dateien in einem Blob speichert ist Geschmackssachen und muss jeder für sich selbst entscheiden.
Zu SQLite und MultiUser habe ich hier einen interessanten Thread gefunden Link
Gruß, Thomas
Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 20. Februar 2017 14:19
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 1. März 2017 14:23