Seite 1 von 1
Eine SQLite Datenbank in eine weitere Einfügen
Verfasst: 26.02.2019 19:14
von Velindos
Hallo Leute,
ich möchte an eine bestehende SQLite Datenbank eine weitere gleich SQLite Datenbank einfügen!
; Bestehend öffnen
Code: Alles auswählen
If OpenDatabase(DB_Bestehend, Database_Bestehend$, "", "", #PB_Database_SQLite)
; Dazu Database öffnen!
If OpenDatabase(DB_Dazu, Database_Dazu$, "", "", #PB_Database_SQLite)
; Query
DatabaseQuery(DB_Bestehend, "Select * From Velindos")
; Abfrage und Dazu geben!
While NextDatabaseRow(DB_Bestehend)
???? holen und einfügen nach Record
Wend
EndIf
FinishDatabaseQuery(DB_Dazu)
CloseDatabase(DB_Dazu)
FinishDatabaseQuery(DB_Bestehend)
CloseDatabase(DB_Bestehend)
EndIf
Hat jemand damit bereits Erfahrung!
Gruss ... Velindos!
Re: Eine SQLite Datenbank in eine weitere Einfügen
Verfasst: 26.02.2019 19:53
von mk-soft
Wenn du Zwei Datenbanken (also zwei Dateien von Type SQLite) hast, Kannst/must du diese halt auch zwei mal mit OpenDataBase öffnen.
Steht ja nichts nicht da gegen mehrere Datenbanken zu öffnen.
Es müssen aber die Daten immer über Dein Programm laufen. Eine Quer-Kommunikation zwischen den Datenbanken mit SQL-Befehlen ist nicht möglich.
Re: Eine SQLite Datenbank in eine weitere Einfügen
Verfasst: 27.02.2019 11:18
von Velindos
Hallo mk-soft!
Verstehe ich das Richtig, das ich beide Öffne und die Variablen einzeln Einlese und diese an die Zielbase einzel Übergebe und anschliessen ein Update fahre.
Es müssen aber die Daten immer über Dein Programm laufen
Es gibt also keinen Befehl wo ich den gesamten Base Record nehme und ihn in die andere Base Schreibe?
Gruss ... Velindos!
Re: Eine SQLite Datenbank in eine weitere Einfügen
Verfasst: 27.02.2019 19:23
von Bisonte
Nein. Du musst einen Datensatz selbst auslesen und dann kannst du ihn in die andere DB schreiben. So war das von meinen Vorrednern gemeint.
Einen Befehl gibt es für sowas nicht. Auch nicht in SQL92 selbst.
Re: Eine SQLite Datenbank in eine weitere Einfügen
Verfasst: 27.02.2019 22:06
von Kiffi
hiermit geht's am schnellsten (Attach -> 1 x Insert Into -> Detach):
Code: Alles auswählen
EnableExplicit
UseSQLiteDatabase()
Procedure CheckDatabaseUpdate(Database, Query$)
Protected Result
Result = DatabaseUpdate(Database, Query$)
If Result = 0
Debug DatabaseError()
EndIf
ProcedureReturn Result
EndProcedure
Define DatabaseFile_Source.s = GetTemporaryDirectory() + "test1.db"
Define DatabaseFile_Target.s = GetTemporaryDirectory() + "test2.db"
DeleteFile(DatabaseFile_Source)
DeleteFile(DatabaseFile_Target)
Define FF, DB_Source, DB_Target
; Create test-databases
If FileSize(DatabaseFile_Source) = -1
FF = CreateFile(#PB_Any, DatabaseFile_Source)
If FF
CloseFile(FF)
DB_Source = OpenDatabase(#PB_Any, DatabaseFile_Source, "", "")
If DB_Source
DatabaseUpdate(DB_Source, "CREATE TABLE food (name CHAR(50), weight INT)")
CheckDatabaseUpdate(DB_Source, "INSERT INTO food (name, weight) VALUES ('apple', '10')")
CheckDatabaseUpdate(DB_Source, "INSERT INTO food (name, weight) VALUES ('pear', '5')")
CheckDatabaseUpdate(DB_Source, "INSERT INTO food (name, weight) VALUES ('banana', '20')")
CloseDatabase(DB_Source)
EndIf
EndIf
EndIf
If FileSize(DatabaseFile_Target) = -1
FF = CreateFile(#PB_Any, DatabaseFile_Target)
If FF
CloseFile(FF)
DB_Target = OpenDatabase(#PB_Any, DatabaseFile_Target, "", "")
If DB_Target
DatabaseUpdate(DB_Target, "CREATE TABLE food (name CHAR(50), weight INT)")
CloseDatabase(DB_Target)
EndIf
EndIf
EndIf
; ---
DB_Source = OpenDatabase(#PB_Any, DatabaseFile_Source, "", "")
If DB_Source
DB_Target = OpenDatabase(#PB_Any, DatabaseFile_Target, "", "")
If DB_Target
DatabaseUpdate(DB_Source, "ATTACH DATABASE '" + DatabaseFile_Target + "' AS AttachedDatabase")
CheckDatabaseUpdate(DB_Source, "INSERT INTO AttachedDatabase.food SELECT * FROM food")
If DatabaseQuery(DB_Target, "SELECT * FROM food")
While NextDatabaseRow(DB_Target)
Debug GetDatabaseString(DB_Target, 0)
Wend
FinishDatabaseQuery(DB_Target)
EndIf
DatabaseUpdate(DB_Source, "DETACH DATABASE AttachedDatabase")
CloseDatabase(DB_Target)
Else
Debug "Can't open DatabaseFile_Target"
EndIf
CloseDatabase(DB_Source)
Else
Debug "Can't open DatabaseFile_Source"
EndIf
Grüße ... Peter
Re: Eine SQLite Datenbank in eine weitere Einfügen
Verfasst: 27.02.2019 23:23
von mk-soft
Cool
Man kann also in die Basis Datenbank weiter externe Datenbanken einhängen...
Re: Eine SQLite Datenbank in eine weitere Einfügen
Verfasst: 02.03.2019 13:48
von Velindos
Hallo Kiffi!
Hab´s EINGEBAUT und Funzt!
DANKE, Kiffi!
Gruss ... Velindos!
Re: Eine SQLite Datenbank in eine weitere Einfügen
Verfasst: 05.03.2019 07:42
von Velindos
Hallo Leute,
momentan lese und Schreibe ich nach den Spalten der Base.
Gibt es eine Möglichkeit den gesamten Record einzulesen und
über eine Varibale weiterzugeben!
Code: Alles auswählen
Source_key = "12"
; LESEN nach RECORD
If OpenDatabase(Source, Database_File$, "", "", #PB_Database_SQLite)
DatabaseQuery(Source, "Select * From Velindos WHERE ID ="+ Source_key)
While NextDatabaseRow(Source)
; [Record lesen, aber wie???]
SQL_Record$ = Get.....(Source,0)
Wend
FinishDatabaseQuery(Source)
CloseDatabase (Source)
Else
MessageRequester("Database", "Fehlende Database")
EndIf
Code: Alles auswählen
; Schreiben nach RECORD
If OpenDatabase(Target, Database_File$, "", "", #PB_Database_SQLite)
; Bild laden
SetDatabaseBlob(Target, 0, *ImageMemory, ImageMemSize)
; BASE
DatabaseUpdate(Target,SQL_Record$)
;Datenbank schliessen
CloseDatabase(Target)
Else
MessageRequester("Database", "Fehlende Database")
EndIf
Gruss ... Velindos!
Re: Eine SQLite Datenbank in eine weitere Einfügen
Verfasst: 05.03.2019 11:13
von Kiffi
verstehe ich jetzt nicht. Nun doch nicht mit Attach / Detach?
Re: Eine SQLite Datenbank in eine weitere Einfügen
Verfasst: 05.03.2019 11:56
von Velindos
Hallo Kiffi!
Attach / Detach? Doch/Doch/Doch..
Spass bei Seite! Eingie Base´s übernehme ich wie oben. Aber und jetzt kommt´s, sortiere ich die Base in einem Listicon und möchte Sie in einen Rutsch übernehmen ...
Da die Bases gleich sind wäre es ein Vorteil mit Record zu arbeiten, wenn´s geht!
Gruss ... Velindos!