Ik ben op het moment aan het kijken hoe ik het beste data van een listview kan opslaan. Het gaat er alleen om dat gebruikers kunnen toevoegen en verwijderen (b.v. naam, adres & email). Ik heb zitten kijken naar een Access database, Firebird & Xml. Ik vind het allemaal een beetje "overkill" voor wat het moet kunnen. Is er geen simpelere methode om data uit een listview op te slaan?
Serializen en opslaan op disk?
Digitaal onderwijsmateriaal, leermateriaal voor hbo
Verwijderd
Firebird embedded lijkt me helemaal geen overkill hoor.bin_jackson schreef op zondag 26 juni 2005 @ 14:18:
Ik ben op het moment aan het kijken hoe ik het beste data van een listview kan opslaan. Het gaat er alleen om dat gebruikers kunnen toevoegen en verwijderen (b.v. naam, adres & email). Ik heb zitten kijken naar een Access database, Firebird & Xml. Ik vind het allemaal een beetje "overkill" voor wat het moet kunnen. Is er geen simpelere methode om data uit een listview op te slaan?
Verwijderd schreef op zondag 26 juni 2005 @ 17:39:
[...]
Firebird embedded lijkt me helemaal geen overkill hoor.
Sla het op in een flat-file (ASCII, Binary, whatever) et voila.
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Dan maakt XML ook niet zoveel meer uit
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack
serialize it naar XML, gebruik het tooltje: xsd.exe uit je tools folder van Visual Studio om van een XML een C# class te maken, dan wordt het serializen helemaal een eitje!!
/me weet geen leuke quote voor in zijn signature
en een xml-bestand is geen tekstbestand?
Digitaal onderwijsmateriaal, leermateriaal voor hbo
Let wel op op welke plek je dit bestandje op gaat slaan. Wanneer je de gebruiker zelf laat kiezen is er geen enkel probleem, maar wanneer je programma dit in zijn eigen directory gaat doen maak je hem onbruikbaar in normaal ingerichte omgevingen.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Hoe ik het zou doen
, simpel;
Serializen naar xml, en opslaan, klaar. Lijkt mij de simpelste oplossing
Serializen naar xml, en opslaan, klaar. Lijkt mij de simpelste oplossing
In C# (.Net over het algemeen) is met XML werken toch een stukkie makkelijker dan met ini files...Webgnome schreef op maandag 27 juni 2005 @ 09:25:
Ik heb hetzelfde een tijdje moetendoen en gewoon gekozen voor een ini formatted file niks xml niks db gewoon txt
/me weet geen leuke quote voor in zijn signature
Tja, iedereen roept hier maar weer eens wat, en ik kan me niet van de indruk ontdoen dat er hier heel wat papegaaien rondlopen die wat woordjes gezien hebben, en het gewoon herhalen.
Als je de gegevens uit een bepaalde class wilt opslaan, geef die class dan het [Serializable] attribute.
Dat attribuut zorgt ervoor dat de public properties van jouw objecten kunnen geserializeerd worden.
Wil je zelf wat meer controle over wat er moet geserialized worden, dan moet je ook de ISerializable interface implementeren.
Als je dit gedaan hebt, kan je uw objecten zowel naar xml als naar een binaire file serializen.
Kijk daarvoor eens naar de BinaryFormatter en de SoapFormatter.
Wat Janoz zegt, is ook iets waar je rekening moet mee houden. Als je de gebruiker niet laat kiezen waar hij z'n gegevens opslaat, dan kan je overwegen om gebruik te maken van de Isolated Storage.
Als je de gegevens uit een bepaalde class wilt opslaan, geef die class dan het [Serializable] attribute.
Dat attribuut zorgt ervoor dat de public properties van jouw objecten kunnen geserializeerd worden.
Wil je zelf wat meer controle over wat er moet geserialized worden, dan moet je ook de ISerializable interface implementeren.
Als je dit gedaan hebt, kan je uw objecten zowel naar xml als naar een binaire file serializen.
Kijk daarvoor eens naar de BinaryFormatter en de SoapFormatter.
Wat Janoz zegt, is ook iets waar je rekening moet mee houden. Als je de gebruiker niet laat kiezen waar hij z'n gegevens opslaat, dan kan je overwegen om gebruik te maken van de Isolated Storage.
https://fgheysels.github.io/
Hoezo? Ini files zijn net zo makkelijk te gebruiken. Of er een standaardklasse voor is weet ik niet, maar als die er niet is, dan heb je hem in no time geschreven. Er is bijna niets zo simpel als het uitlezen van een ini file.KnoppenSpook schreef op maandag 27 juni 2005 @ 09:34:
In C# (.Net over het algemeen) is met XML werken toch een stukkie makkelijker dan met ini files...
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
True, zeker niet moeilijk, maar waarom zelf een class schrijven als XmlTextReader al aanwezig is?-NMe- schreef op maandag 27 juni 2005 @ 13:56:
[...]
Hoezo? Ini files zijn net zo makkelijk te gebruiken. Of er een standaardklasse voor is weet ik niet, maar als die er niet is, dan heb je hem in no time geschreven. Er is bijna niets zo simpel als het uitlezen van een ini file.
Verder kan je met XML / XSD combo je data valideren (of gebeurd automatisch als de serialize methode van WhoAmI gebruikt wordt.)
Just 2 ct.
/me weet geen leuke quote voor in zijn signature
Ik zou inderdaad met een eigen class werken en die via het SerializableAttribute attribuut markeren als zijnde serializable. Geef die class dan bijvoorbeeld de (string) properties naam, adres en email. In ieder geval voor ieder stuk info dat jij wilt opslaan, een eigen property.
Maak twee funties (of twee static methods op een eigen class, b.v. ListViewItemCollectionSynchronizer) die een ListViewItemCollection kan synchronizeren met een ArrayList met jouw eigen object. Dit hoeft niet moeilijk te zijn. Loop door de hele ListViewItemCollection heen en maak voor ieder item een instantie van jouw eigen class en voeg die via de Add method toe aan de ArrayList. Andersom kun je items aanmaken in de ListViewItemCollection via de ArrayList met een verzameling van jouw objecten.
Deze ArrayList kun je vervolgens simpel opslaan en weer inladen met behulp van bijvoorbeeld een BinaryFormatter en een FileStream. Wil je het als XML opslaan? Gebruik dan een andere formatter.
Wanneer het niet te veel items zijn, kun je ook DataSet met 1 DataTable aanmaken met een aantal kolommen en de de items in de ListViewItemCollection synchronizeren met die DataTable. Via de ReadXml en WriteXml methods kun je dan mooi XML lezen en schrijven.
Ini files vind ik trouwens minder mooi, maar dat is mijn persoonlijke opinie. .NET staat voor een belangrijk deel toch ook voor XML en niet meer voor 'ouderwetse' ini files. Maar nogmaals, dat vind ik.
Een XmlTextRead gaat uiteraard ook, maar dan moet je zelf een opslagstructuur (elementen, attributen e.d.) verzinnen, terwijl met Serialization alles automatisch voor jou gedaan wordt.
Maak twee funties (of twee static methods op een eigen class, b.v. ListViewItemCollectionSynchronizer) die een ListViewItemCollection kan synchronizeren met een ArrayList met jouw eigen object. Dit hoeft niet moeilijk te zijn. Loop door de hele ListViewItemCollection heen en maak voor ieder item een instantie van jouw eigen class en voeg die via de Add method toe aan de ArrayList. Andersom kun je items aanmaken in de ListViewItemCollection via de ArrayList met een verzameling van jouw objecten.
Deze ArrayList kun je vervolgens simpel opslaan en weer inladen met behulp van bijvoorbeeld een BinaryFormatter en een FileStream. Wil je het als XML opslaan? Gebruik dan een andere formatter.
Wanneer het niet te veel items zijn, kun je ook DataSet met 1 DataTable aanmaken met een aantal kolommen en de de items in de ListViewItemCollection synchronizeren met die DataTable. Via de ReadXml en WriteXml methods kun je dan mooi XML lezen en schrijven.
Ini files vind ik trouwens minder mooi, maar dat is mijn persoonlijke opinie. .NET staat voor een belangrijk deel toch ook voor XML en niet meer voor 'ouderwetse' ini files. Maar nogmaals, dat vind ik.
Een XmlTextRead gaat uiteraard ook, maar dan moet je zelf een opslagstructuur (elementen, attributen e.d.) verzinnen, terwijl met Serialization alles automatisch voor jou gedaan wordt.
Wat heeft xpath te maken met het opslaan ?
En hoe serialiseer je uw objecten nu naar de disk ?
En hoe serialiseer je uw objecten nu naar de disk ?
https://fgheysels.github.io/
Ik denk dat de TS InfoPath bedoeld
Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart
Lezen is één ding. Schrijven is iets heel anders, waarbij je óf zelf iets moet schrijven dat data heen en weer schuift in het bestand, óf gebruik moet maken van de Win32 PrivateProfile* API's, wat je code natuurlijk weer minder portbaar maakt. M.a.w., XML is een stuk makkelijker-NMe- schreef op maandag 27 juni 2005 @ 13:56:
[...]
Hoezo? Ini files zijn net zo makkelijk te gebruiken. Of er een standaardklasse voor is weet ik niet, maar als die er niet is, dan heb je hem in no time geschreven. Er is bijna niets zo simpel als het uitlezen van een ini file.
.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?
Waarom wijzig je de objecten niet, en serializeer je dan de gewijzigde objecten terug naar de schijf ?bin_jackson schreef op dinsdag 28 juni 2005 @ 07:16:
Ik gebruik Xpath voor het wijzigen van de informatie
Nu ga je dus rechtstreeks in je xml-file dingen gaan aanpassen ?
https://fgheysels.github.io/
Wat is er mis met rechtstreeks je files aanpassen?whoami schreef op dinsdag 28 juni 2005 @ 12:41:
[...]
Waarom wijzig je de objecten niet, en serializeer je dan de gewijzigde objecten terug naar de schijf ?
Nu ga je dus rechtstreeks in je xml-file dingen gaan aanpassen ?
[ Voor 16% gewijzigd door Reb87 op 28-06-2005 13:56 ]
Waarom zou je dat doen ?bin_jackson schreef op dinsdag 28 juni 2005 @ 13:55:
[...]
Wat is er mis met rechtstreeks je files aanpassen?
- je hebt geen controle (data validatie)
- je omzeilt je objecten
etc...
https://fgheysels.github.io/
Wanneer je je bestanden rechtstreeks aanpast veranderen de objecten in je geheugen niet mee. Om de data vervolgens weer in het geheugen te krijgen moet je alsnog je gegevens vanaf schijf inladen. Dat lijkt mij dus een beetje een omweg
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Pagina: 1