leeren BLOB speichern

Für allgemeine Fragen zur Programmierung mit PureBasic.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: leeren BLOB speichern

Beitrag von ccode_new »

ProgOldie hat geschrieben:Noch einmal: Ich will keine Zeile löschen, sondern in einem Feld einer Zeile einen leeren BLOB speichern
Aha, Ok dann probiere es doch mal mit deinem Vorschlag.

SetDatabaseBlob(DBNum, BlobNr, #NULL, 0)

Geht das ? (Ich habe es noch nicht getestet.)

Oder du gibst eine Speicheradresse an. Speicherst aber keine Daten an diese Adresse und die Länge ist quasi 0 (Prüfe mit: MemorySize() )

Teste einfach mal.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8677
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: leeren BLOB speichern

Beitrag von NicTheQuick »

Mangels Datenbank kann ich das auch nicht testen, aber wenn es ein gültiger Pointer sein muss, aber die Länge 0 sein darf, dann versuch doch mal das:

Code: Alles auswählen

Define tmp.i
SetDatabaseBlob(#Database, StatementIndex, @tmp, 0)
Als Speicheradresse nehme ich einfach den Pointer zu einer temporären Variablen. Der ist dann gültig, aber da die Länge 0 ist, sollte ein leerer Blob gespeichert werden und der Pointer sonst nicht weiter berücksichtigt werden.
Bild
Benutzeravatar
ProgOldie
Beiträge: 236
Registriert: 19.05.2012 17:09
Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02

Re: leeren BLOB speichern

Beitrag von ProgOldie »

Hallo Nic,
raffiniert, das teste ich morgen mal.
Windows10 / PB5.70 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: leeren BLOB speichern

Beitrag von Sicro »

SetDatabaseNull()
DatabaseUpdate()

So müsste es funktionieren:

Code: Alles auswählen

SetDatabaseNull(Database, 0)
DatabaseUpdate(0, "UPDATE MyTableName SET MyBlobField=? WHERE PictureNumber=10")
Verwendest du eine PostgreSQL-Datenbank musst du das Fragezeichen durch ein Dollarzeichen und einer Eins ($1) ersetzen, wie in dem Link "DatabaseUpdate()" oben nachzulesen ist.

Oder so:

Code: Alles auswählen

DatabaseUpdate(0, "UPDATE MyTableName SET MyBlobField=null WHERE PictureNumber=10")
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
ProgOldie
Beiträge: 236
Registriert: 19.05.2012 17:09
Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02

Re: leeren BLOB speichern

Beitrag von ProgOldie »

Danke Sicro,
SetDatabaseNull : Genau so etwas habe ich gesucht.
Das ist wohl die standardmäßig vorgesehene Lösung.
Windows10 / PB5.70 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18
Antworten