[c#]Beste manier om data op te slaan

Pagina: 1
Acties:
  • 249 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • Reb87
  • Registratie: Maart 2003
  • Niet online
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? :?

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:49

gorgi_19

Kruimeltjes zijn weer op :9

Serializen en opslaan op disk?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

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? :?
Firebird embedded lijkt me helemaal geen overkill hoor.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zondag 26 juni 2005 @ 17:39:
[...]

Firebird embedded lijkt me helemaal geen overkill hoor.
:D Voor een paar gegevens ga je toch geen DB draaien?
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


Acties:
  • 0 Henk 'm!

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 18-09 10:39
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


Acties:
  • 0 Henk 'm!

  • KnoppenSpook
  • Registratie: Augustus 2000
  • Laatst online: 04-09-2023
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


Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 15:21
Ik heb hetzelfde een tijdje moetendoen en gewoon gekozen voor een ini formatted file niks xml niks db gewoon txt :P

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:49

gorgi_19

Kruimeltjes zijn weer op :9

en een xml-bestand is geen tekstbestand?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:40

Janoz

Moderator Devschuur®

!litemod

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'


Acties:
  • 0 Henk 'm!

  • Bartjuh
  • Registratie: Oktober 2001
  • Niet online

Bartjuh

Hej

Hoe ik het zou doen :? , simpel;
Serializen naar xml, en opslaan, klaar. Lijkt mij de simpelste oplossing :)

Acties:
  • 0 Henk 'm!

  • KnoppenSpook
  • Registratie: Augustus 2000
  • Laatst online: 04-09-2023
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 :P
In C# (.Net over het algemeen) is met XML werken toch een stukkie makkelijker dan met ini files...

/me weet geen leuke quote voor in zijn signature


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 08:27
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.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

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...
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. ;)

'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.


Acties:
  • 0 Henk 'm!

  • KnoppenSpook
  • Registratie: Augustus 2000
  • Laatst online: 04-09-2023
-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. ;)
True, zeker niet moeilijk, maar waarom zelf een class schrijven als XmlTextReader al aanwezig is?
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


Acties:
  • 0 Henk 'm!

  • SlowMeDown
  • Registratie: Mei 2003
  • Laatst online: 24-01-2023
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.

Acties:
  • 0 Henk 'm!

  • Reb87
  • Registratie: Maart 2003
  • Niet online
Ik heb voor Xml/Xpath gekozen. Alles werkt perfect nu ;)

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 08:27
Wat heeft xpath te maken met het opslaan ?

En hoe serialiseer je uw objecten nu naar de disk ?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 20-08 21:38
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


Acties:
  • 0 Henk 'm!

  • Reb87
  • Registratie: Maart 2003
  • Niet online
Ik gebruik Xpath voor het wijzigen van de informatie ;)

Acties:
  • 0 Henk 'm!

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 13-07 01:53

Korben

() => {};

-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. ;)
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 :)

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 08:27
bin_jackson schreef op dinsdag 28 juni 2005 @ 07:16:
Ik gebruik Xpath voor het wijzigen van de informatie ;)
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 ?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 14:03
Serializen is volgens mij ook de eenvoudigste manier. Waarom zelf met xpath moeilijk doen?

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • Reb87
  • Registratie: Maart 2003
  • Niet online
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 ?
Wat is er mis met rechtstreeks je files aanpassen? :? Ik ga trouwens ook even kijken naar dat Serializen (Serialization). Ik heb het steeds zien terug komen in dit topic dus... ;)

[ Voor 16% gewijzigd door Reb87 op 28-06-2005 13:56 ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 08:27
bin_jackson schreef op dinsdag 28 juni 2005 @ 13:55:
[...]


Wat is er mis met rechtstreeks je files aanpassen? :?
Waarom zou je dat doen ?
- je hebt geen controle (data validatie)
- je omzeilt je objecten
etc...

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:40

Janoz

Moderator Devschuur®

!litemod

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