Gå til innhold

AOD recordset - over nett


Anbefalte innlegg

Jeg prøver meg med ADO objekter for første gang. Jeg har et recordset med de ønskede data og får til å hente ut data som jeg vil fra dette lokalt. Men jeg ønsker å sende dette over nett og tolke dataene på den andre maskinen. Hvordan får man serialisert et ADO objekt?

 

Det nærmeste jeg har kommet er $Recordset.save($stream) og deretter $stream.read(). Da får jeg en binær representasjon av objektet. Men $recoverStream.write() klarer ikke å lese disse binære dataene (står også i dokumentasjonen at den ikke kan det), så jeg får ikke reversert prosessen etter nettoverføringen.

http://msdn.microsof...v=vs.85%29.aspx

 

Hva er trikset for å sende et ADO objekt? Må man lese ut hvert enkelt element i recordsettet, sette sammen i en strøm med separatorer og parse det i andre enden?

 

Edit:

Her er en som har gjort akkurat det jeg prøver på i .net

http://www.codeproject.com/Articles/15724/ADODB-Serialization

 

Jeg får feilmelding hvis jeg prøver å sette stream.Type, men dok sier at type settes automagisk til binær dersom første skriving til strømmen er binær. Altså skulle ikke det være utslagsgivende.

 

Akkurat samme feil kommer på write. Feilmeldingen er så givende som

The requested action with this object has failed.
Endret av petterg
Lenke til kommentar
Videoannonse
Annonse

Hei

 

I "klassisk VB" / VBA er det et optional valg å lagre et recordset som XML, slik:

 

rst.Save "C:\Temp\a.xml", adPersistXML

 

se om dette også er tilgjengelig i hva du enn bruker. Nøkkelen ligger nok i Save. Tilsvarende finnes det en grei metode å åpne senere:

 

rst.Open "C:\Temp\a.xml"

 

HTH. Beste hilsen Harald

Lenke til kommentar

Hadde håpet å slippe å gå veien om tempfil. For server er det greit, men ikke for klient. Det er sensitive data så alle spor bør være borte fra klientmaskina når bruker lukker programmet. rst.Open krever jo at det ligger en ukryptert tempfil på klienten. En mulighet er kanskje å sende fila i et truecrypt volum som klienten kan mounte med portabel versjon av truecrypt, men da er det vel omtrent like dumt å loope igjennom recordsettet og lage en base64-kodet streng som må parses på klienten.

 

Merkelig at rst.save støtter skriving til en binær fil / stream, men at rst.open kun klarer å lese dette dersom kilden er en fil. Detter hva jeg kan lese meg til er det nettopp dette .read skulle være godt for.

 

Skriver i autoit.

Lenke til kommentar

Det som er vanlig er å lage en proxy-service. Ofte gjøres dette med HTTP og serialisering av XML eller JSON ved at man lager dataklasser som fylles opp av recordsettet og serveres til en ekstern tjeneste som XML eller JSON som er enkelt å deserialisere på andre siden.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...