18. oktober 2005 - 11:35Der er
21 kommentarer og 1 løsning
Datareader og Transaction
Jeg vil gerne lave en stump kode, hvor jeg får tilgang til en database vha. en DataReader og over en Transaction. Men hvordan gøres dette? Findes der et eksempel et sted? I anden omgang vil jeg også gerne sende forespørgsler til databasen med varierende parametre. Men dette er sekundært :-)
Ja, det er sådan set kun opdateringer, hvor transaktioner er interessante. Men hvis jeg så et eksempel, hvor det blev brugt på en forespørgsel, så kan jeg hurtigt selv lave det om. Men om jeg får et eksempel med det ene eller det andet, det er lige meget. Jeg har prøvet at lave en 2-3 forskellige transactioner på connections af forskellige former. Men ingen af dem virker. Det er derfor, jeg gerne vil have et eksempel, hvor det er sikkert, at det virker.
du kalder BeginTransaction på din Connection og får et Transaction objekt så udfører du et antal Command's og så kalder du Commit eller Rollback på dit Tranaction objekt
De virker ikke, når jeg forsøger at sætte indeholdet af forespørgslen ind i et dataset. Og jeg kan ikke se, hvorfor det ikke skulle virke. Det virker fint i andre tilfælde. Altså uden transaktionen. Har du et komplet eksempel med enten select eller insert på en Access-database?
Hvis man nu viser et dataset over indholdet af tabellen, og man så efterfølgende sætter data ind i tabellen via en transaktion, og man så gerne vil vise den opdaterede tabel i dataset'et igen, er det så ikke muligt?
For ellers er en dataadaptor vel heller ikke interessant. Og jeg vil jo gerne have en transaktion og brugen af en dataadaptor sat sammen i samme løsning/class...?
Jeg har fået det til at virke nu. Tak for det, Arne V. Jeg har dog lige et enkelt spørgsmål mere i relation til dette overordnede spørgsmål. Nemlig om du kan hjælpe mig med parametre på min forespørgsel, så jeg kan arbejde med parameteriserede SQL-forespørgsler?
Et DataSet er noget man bruger til ar opbevare data i for en periode af nogle minutter. En transaktion er noget som skal afsluttes i millisekunder. Derfor synes jeg ikke at man kan bruge transaktioner sammen med DataSet.
At holde dit DataSet opdateret hvis andre retter i data må være helt uafhængig af om der bruges transaktioner eller ej.
hmm, jeg kan godt se, at der er noget med nogle parametre forskellige steder i koden. Men jeg synes ikke lige, at jeg kan se den røde tråd. Vil du ikke skære det lidt ud i pap for mig? :-)
OleDbCommand ins = new OleDbCommand("INSERT INTO dtest VALUES (?, ?)", con); ins.Parameters.Add("@i", OleDbType.Integer); ins.Parameters.Add("@d", OleDbType.Date); for(int i = 0; i < 10; i++) { ins.Parameters["@i"].Value = i; ...
både i ins.Parameters.Add("@ og i ins.Parameters["@i"].Value = i; ? Ah, er det fordi, at man først angiver hvilken datatype, der er tale om, og derefter indsætter man så det aktuelle element?
jeg mener godt at man kan gøre det i et hug men jeg gør det altid i to omgange
fordi det at definere en parameter og det at give parameteren en værdi til et bestemt kald er to forskellige ting - og det første skal kun gøres engang per statement mens det sidste kan gøres mange gange
Okay. Men er der så nogen reel grund til at sætte tegnet "@" ind foran parameternavnet, når det aligevel blot er en del af en streng? Eller er det noget, som frameworket skal have, for at det kan behandle dataene korrekt?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.