AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Bild selektieren und wo anders updaten?
Thema durchsuchen
Ansicht
Themen-Optionen

Bild selektieren und wo anders updaten?

Ein Thema von OrNEC · begonnen am 29. Mai 2014 · letzter Beitrag vom 30. Mai 2014
Antwort Antwort
Seite 1 von 2  1 2      
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#1

Bild selektieren und wo anders updaten?

  Alt 29. Mai 2014, 15:03
Datenbank: SQLite • Version: 3 • Zugriff über: SQLiteSimpleDelphi-Wrappers von Tim Anderson
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-newthen
    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-sollbleibenthen
             begin
             // hier also ungefähr so -> UPDATE media SET picture = ? WHERE (select picture where id_media=n) WHERE id_media=m
             end;

Geändert von OrNEC (29. Mai 2014 um 15:22 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Bild selektieren und wo anders updaten?

  Alt 29. Mai 2014, 15:27
insert into media ( <Felder ohne id>) select <Felder ohne id> from media where id = :id;
Markus Kinzler
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Bild selektieren und wo anders updaten?

  Alt 29. Mai 2014, 15:38
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Bild selektieren und wo anders updaten?

  Alt 29. Mai 2014, 15:44
Das Statement kopiert den Datensatz komplett,
Vielleicht wäre es sinnvoll die Bilder in einer separaten Tabelle zu speichern und diese nur zu referenzieren
Markus Kinzler
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Bild selektieren und wo anders updaten?

  Alt 29. Mai 2014, 15:53
Das Statement kopiert den Datensatz komplett,
Vielleicht wäre es sinnvoll die Bilder in einer separaten Tabelle zu speichern und diese nur zu referenzieren
Ja ich verstehe, aber ich muss die Bilder immer updaten. Geht das etwa in meinem Fall nicht?

Die Anwendung und die DB werden klein sein, deswegen braucht man keine separate Tabelle. ))
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Bild selektieren und wo anders updaten?

  Alt 29. Mai 2014, 19:16
Ich glaube ich habe es, dank einem SQL-Buch von G. Kuhlmann, F. Müllmerstadt. Alles cool beschrieben.


sSQL2 := 'UPDATE media SET picture = (SELECT picture FROM media WHERE id_media = n) WHERE id_media = ' + m);
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Bild selektieren und wo anders updaten?

  Alt 30. Mai 2014, 10:29
Zitat:
Die Anwendung und die DB werden klein sein, deswegen braucht man keine separate Tabelle. ))
Redundanz ist Redundanz und die sollte man vermeiden, unabhängig vom Platzverbrauch.
Markus Kinzler
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Bild selektieren und wo anders updaten?

  Alt 30. Mai 2014, 10:31
Hast Recht, aber der Aufwand wäre riesengroß für ne Minianwendung.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Bild selektieren und wo anders updaten?

  Alt 30. Mai 2014, 10:50
Hast Recht, aber der Aufwand wäre riesengroß für ne Minianwendung.
Da kann ich Dir nur Recht geben, ebenso ist es unnötig sich im Auto anzuschnallen wenn's mal nur zum Bäcker geht, oder auf einem Mororrad einen Helm zu tragen oder den Wohnungsschlüssel einzustecken wenn man mal eben schnell zum Briefkasten läuft...

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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Bild selektieren und wo anders updaten?

  Alt 30. Mai 2014, 11:00
Ist es dann vllt noch besser die Bilder gar nicht in die DB zu speichern? Einfach in ein Unterordner das ganze ablegen und fertig.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz