![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: SQLiteSimpleDelphi-Wrappers von Tim Anderson
Bild selektieren und wo anders updaten?
Hallo,
ich habe folgende Frage: ich erstelle in der DB ein Datensatz, hole dessen ID und update in diese Zeile ein Bild, dass zuvor mittels OpenDialog ausgewählt wurde. Nun möchte ich ein Datensatz duplizieren, dafür erstelle ich in der DB einen neuen Datensatz und falls das Bild bleiben soll, soll es einfach nur in die neue Zeile kopiert werden. Wie mache ich das nur? Also rein logisch ist es klar, ich selektiere das Bild mit der ZeileID=n und update es in die ZeileID=n+x. Wie schreibe ich nur den Code dazu? Praktisch wäre es die COPY Funktion, aber in der SQL Sprache kann ich das ja nur mittels Select und Insert Into realisieren. Danke!
Delphi-Quellcode:
if srcpic = 'pic-new' then
begin fs := TFileStream.Create(dest, fmOpenRead); try varid := db.GetLastInsertRowID; sSQL2 := 'UPDATE media SET picture = ? WHERE id_media = ' + IntToStr(varid); db.UpdateBlob(sSQL2, fs); finally FreeAndNil(fs); end; end else if srcpic = 'pic-sollbleiben' then begin // hier also ungefähr so -> UPDATE media SET picture = ? WHERE (select picture where id_media=n) WHERE id_media=m end; |
AW: Bild selektieren und wo anders updaten?
SQL-Code:
insert into media ( <Felder ohne id>) select <Felder ohne id> from media where id = :id;
|
AW: Bild selektieren und wo anders updaten?
Kann man das nicht mit UPDATE lösen? INSERT INTO wird vorher für den Text verwendet, weil noch ein INSERT INTO schreibt das Bild in eine neue Zeile.
|
AW: Bild selektieren und wo anders updaten?
Das Statement kopiert den Datensatz komplett,
Vielleicht wäre es sinnvoll die Bilder in einer separaten Tabelle zu speichern und diese nur zu referenzieren |
AW: Bild selektieren und wo anders updaten?
Zitat:
Die Anwendung und die DB werden klein sein, deswegen braucht man keine separate Tabelle. )) |
AW: Bild selektieren und wo anders updaten?
Ich glaube ich habe es, dank einem SQL-Buch von G. Kuhlmann, F. Müllmerstadt. Alles cool beschrieben. :thumb:
Delphi-Quellcode:
sSQL2 := 'UPDATE media SET picture = (SELECT picture FROM media WHERE id_media = n) WHERE id_media = ' + m);
|
AW: Bild selektieren und wo anders updaten?
Zitat:
|
AW: Bild selektieren und wo anders updaten?
Hast Recht, aber der Aufwand wäre riesengroß für ne Minianwendung.
|
AW: Bild selektieren und wo anders updaten?
Zitat:
Es gibt Dinge die tut "man" einfach nicht, und dazu gehört BLOB-Felder mit anderen Feldern in einer Tabelle zu mischen. Einzige Ausnahme, man ist extrem clever. Was ist "riesengroß" beim Anlegen einer zweiten Tabelle? Wenn man sich schon entschieden hat, ein paar Daten in einer DB unterzubringen, dann sollte man dies auch konsequent durchziehen. Gruß K-H |
AW: Bild selektieren und wo anders updaten?
Ist es dann vllt noch besser die Bilder gar nicht in die DB zu speichern? Einfach in ein Unterordner das ganze ablegen und fertig.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz