Datenbank (Datei) löschen
- NicTheQuick
- Ein Admin
- Beiträge: 8675
- 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: Datenbank (Datei) löschen
Ich vermute immer noch den Virenscanner dahinter. Oder andauernde Aufräumarbeiten der SQLite-Engine im Hintergrund und vielleicht wartet 'CloseDatabase()' nicht bis die beendet wurden. Vor allem bei einer großen Datenbank könnte das der Grund sein.
Re: Datenbank (Datei) löschen
Funktioniert hier unter Windows 10 und PB v5.73 und v6.00 einwandfrei.
Aber vielleicht das mal lesen ...
Link: https://www.sqlite.org/c3ref/close.html
Vielleicht hat Nic recht.
Versuch mal ...
Update
Aber vielleicht das mal lesen ...
Link: https://www.sqlite.org/c3ref/close.html
Vielleicht hat Nic recht.
Versuch mal ...
Update
Code: Alles auswählen
; **** SQL Datenbank schliessen ***
Import ""
sqlite3_close(*sqlite3)
EndImport
#SQLITE_OK = 0
#SQLITE_BUSY = 5
Structure udtDatabaseObject
i.i[0]
EndStructure
Procedure CloseSQLiteDatabase(Database, Timeout = 20000)
Protected r1, id, time, *db_object.udtDatabaseObject
If Not IsDatabase(Database)
ProcedureReturn 0
EndIf
id = DatabaseID(Database)
*db_object = IsDatabase(Database)
Repeat
r1 = sqlite3_close(id)
If r1 = #SQLITE_OK
*db_object\i[4] = 0 ; Set handle to Nil (Offset 4)
Break
ElseIf r1 = #SQLITE_BUSY
If time = 0
Debug "Datenbank in bearbeitung, bitte warten ... "
EndIf
time + 100
Delay(100)
If time > Timeout ; Millisekunden
Debug "Fehler Datenbank schliessen Timeout!"
Break
EndIf
Else
Debug "Fehler Datenbank schliessen Fehlercode " + r1
Break
EndIf
ForEver
CloseDatabase(Database)
EndProcedure
; ****
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Datenbank (Datei) löschen
Guten Morgen
ich probiere dein code und bekomme die Meldung "Ungültiger Speicherzugriff" (unter v5.31) bei
*db_object\i[4] = 0 ; Set handle to Nil (Offset 4)
ich probiere dein code und bekomme die Meldung "Ungültiger Speicherzugriff" (unter v5.31) bei
*db_object\i[4] = 0 ; Set handle to Nil (Offset 4)
Win-10, PB 5.31 (Windows - x86)
- TroaX
- Beiträge: 660
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
- Wohnort: NRW
- Kontaktdaten:
Re: Datenbank (Datei) löschen
Haha lol ich Depp. Warum einfach, wenn es auch kompliziert geht:
Hach das kommt davon, wenn man fast nur noch mit PWA und Backends herumspielt. Dann kommt man auf so banale Lösungen nicht.
Was ich aber nicht so ganz verstehe. Warum erzeugst du eine Datenbank, arbeitest mit dieser, aber löscht sie im selben Atemzug wieder, wenn du fertig bist? Macht das nicht ein wenig den Sinn von Datenbanken kaputt? Wenn nur Daten drin stehen, die du während der Ausführung des Programms benötigst, aber nicht permanent speichern willst, macht es meiner Meinung mehr Sinn, diese im RAM zu lassen.
Code: Alles auswählen
While DeleteFile(GetTemporaryDirectory()+Filename+".db") <> 0 ; Schleife läuft, bis die Datei gelöscht werden kann
Delay(1) ; Schleife gibt Prozessorzeit frei und friert das Programm nicht direkt ein
Wend
; Kommst du hier an, ist die Datei gelöscht!!
Was ich aber nicht so ganz verstehe. Warum erzeugst du eine Datenbank, arbeitest mit dieser, aber löscht sie im selben Atemzug wieder, wenn du fertig bist? Macht das nicht ein wenig den Sinn von Datenbanken kaputt? Wenn nur Daten drin stehen, die du während der Ausführung des Programms benötigst, aber nicht permanent speichern willst, macht es meiner Meinung mehr Sinn, diese im RAM zu lassen.
Zuletzt geändert von TroaX am 19.01.2022 11:46, insgesamt 1-mal geändert.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
- NicTheQuick
- Ein Admin
- Beiträge: 8675
- 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: Datenbank (Datei) löschen
Du solltest vielleicht noch einen Timeout einbauen, falls es mal wirklich nicht geht oder die Datei schon gelöscht bzw. nie erstellt wurde. Man weiß ja nie. Aber ansonsten hängst du ja in einer Schleife fest. Das Delay(1) ist für meinen Geschmack auch etwas zu kurz, aber um die CPU-Nutzung niedrig zu halten, reicht es vermutlich trotzdem.
- TroaX
- Beiträge: 660
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
- Wohnort: NRW
- Kontaktdaten:
Re: Datenbank (Datei) löschen
Na ich wollte jetzt nu nicht alles vorkauen.NicTheQuick hat geschrieben: ↑19.01.2022 11:46 Du solltest vielleicht noch einen Timeout einbauen, falls es mal wirklich nicht geht oder die Datei schon gelöscht bzw. nie erstellt wurde. Man weiß ja nie. Aber ansonsten hängst du ja in einer Schleife fest. Das Delay(1) ist für meinen Geschmack auch etwas zu kurz, aber um die CPU-Nutzung niedrig zu halten, reicht es vermutlich trotzdem.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Re: Datenbank (Datei) löschen
So einfach ist es nicht.
Das Löschen ist immer fehlerhaft. in so eine loop lauft auf Ewigkeit.
Das Löschen ist immer fehlerhaft. in so eine loop lauft auf Ewigkeit.
Win-10, PB 5.31 (Windows - x86)
Re: Datenbank (Datei) löschen
Zur Erläuterung:
DB werden in eine Programm erzeugt.
Diese vorhandene Datenbanken werden als List angezeigt.
Der benutzen kann die Daten aus eine DB per doppelklick ansehen und z.B. die Daten drucken, ändern und so. und die DB löschen
DB werden in eine Programm erzeugt.
Diese vorhandene Datenbanken werden als List angezeigt.
Der benutzen kann die Daten aus eine DB per doppelklick ansehen und z.B. die Daten drucken, ändern und so. und die DB löschen
Win-10, PB 5.31 (Windows - x86)