na, dann komme ich mal mit meiner berüchtigten Spatzenkanone
Code: Alles auswählen
EnableExplicit
NewList lList.s()
AddElement(lList()) : lList() = "Thomas"
AddElement(lList()) : lList() = "Maria"
AddElement(lList()) : lList() = "Dennis"
AddElement(lList()) : lList() = "Thomas"
AddElement(lList()) : lList() = "Alf"
AddElement(lList()) : lList() = "Sarah"
AddElement(lList()) : lList() = "Dennis"
AddElement(lList()) : lList() = "Falko"
AddElement(lList()) : lList() = "Thomas"
AddElement(lList()) : lList() = "Alf"
AddElement(lList()) : lList() = "Holger"
AddElement(lList()) : lList() = "Alf"
AddElement(lList()) : lList() = "Dennis"
UseSQLiteDatabase()
Define DB = OpenDatabase(#PB_Any, ":memory:", "", "", #PB_Database_SQLite)
If DB
If DatabaseUpdate(DB, "Create Table DummyTable (ID Integer, DummyField Text Unique)")
ForEach lList()
If DatabaseUpdate(DB, "Insert Into DummyTable (ID, DummyField) Values (" + ListIndex(lList()) + ", '" + lList() + "')") = 0
Debug lList() + ": " + DatabaseError() ; ausgeben, was hier aufgrund von Unique NICHT eingefügt wird
EndIf
Next
ClearList(lList())
If DatabaseQuery(DB, "Select DummyField From DummyTable Order By ID")
While NextDatabaseRow(DB)
AddElement(lList()) : lList() = GetDatabaseString(DB, 0)
Wend
FinishDatabaseQuery(DB)
EndIf
EndIf
CloseDatabase(DB)
EndIf
Debug "---"
ForEach lList()
Debug lList()
Next
Zum Hintergrund: Es wird eine SQLite-Datenbank im Speicher (':memory:') angelegt, die eine Tabelle beinhaltet, welche wiederum ein
Unique-Feld enthält. Dieses verhindert, dass doppelte Einträge getätigt werden.
Im Grunde genommen ist es also eine überdimensionierte Map-Funktionalität. Maps haben allerdings die Eigenart, dass die Reihenfolge der darin enthaltenen Elemente nicht beeinflusst werden kann. Sprich: Die Einträge können nicht unbedingt in der Reihenfolge ausgelesen werden, in der man sie eingefügt hat. Leider gibt es auch keine Sort(Structured)Map(), wie man es von LinkedLists oder Arrays her kennt.
Die Einträge der SQLite-Tabelle können hingegen beliebig sortiert werden. Hier: nach der ID; also die Reihenfolge, in der die Einträge eingefügt wurden.
Grüße ... Peter