Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Transaction

Postades av 2003-09-28 16:30:58 - Andreas Brantmo, i forum asp.net generellt, Tråden har 2 Kommentarer och lästs av 694 personer

Jag har problem att få en Transaction att fungera. Så här ser det ut.

Jag har en abstrakt superklass med en overridable Create-metod och en subklass med samma metod. I subklassens Create() så börjar den med att anropa superklassen genom MyBase.Create().

När den har körts lägger sedan subklassen in övriga uppgifter i databasen. Nu kommer problemet. Jag vill kunna knyta en Transaction till detta så om det blir fel i subklassen (som körs efteråt) så ska en Rollback köras och ångra det som gjordes i superklassens Create-metod.

Det är samma Connection-objekt som används i bägge klasserna. Däremot är det inte samma Command.

Superklass:
<code>
Public Overridable Function Create([...])

...

Try
oConnection.Open()
oTransaction = oConnection.BeginTransaction
oCommand.Transaction = oTransaction
oCommand.ExecuteNonQuery()
Catch ex As Exception
...
Finally
If Not oConnection.State = ConnectionState.Closed Then
oConnection.Close()
End If
End Try

End Function

</code>

I superklassen startar jag transaktionen i Try-blocket. Transaktionen vill jag ska följa med även i subklassen. Så blir inte fallet eftersom oCommand dör innan.

Subklass
<code>

Public Shadows Function Create

MyBase.Create([...])

...

Try
oConnection.Open()
oCommand.ExecuteNonQuery()
Catch ex As Exception
oTransaction.Rollback()
...
Finally
If Not oConnection.State = ConnectionState.Closed Then
oConnection.Close()
End If
End Try

End Function

</code>

Då får jag följande fel: "This SqlTransaction has completed; it is no longer usable."

Mycket tacksam för all hjälp jag kan få.


Svara

Sv: Transaction

Postades av 2003-09-28 17:38:33 - Fredrik Normén

Du måste se till att definiera din objekt utanför din create metod och tilldela de objekt du vill komma ät i sub klassen i tex din bas klass create metod.

Om du tar en titt på din kod så ser du att i sub klassens create kör du bas klassens create metod. Bas klassen öppnar en connection, transaktoion startas och execute körs. Men du stänger även din connection, så när din sub klass sedan kommer till oConnection.Open() så finns den inte längre.

Se till så din bas klass create skapar upp en connection och transaction, se då till att de lagras i en variblar definierade utanför create. I din sub klass create metod kör du MyBase.Create()

sedan för att komma åt ditt connection object som öppnades i bas klassen skriver du:

MyBase.oConnection.Open()

om nu din variabel hetter oConnection.
Sedan för att köra execute skriver du

MyBase.oConnection.ExecuteNonQuery()

Se till att utföra din transaction och se till att stänga din connection i sub klassen när du är klar.

MyBase.oConnection.Close()

TIPS!! Att hålla igång en transaction kräver prestanda, så försök starta en så sent som möjligt och avsluta den så fort som möjligt, gäller även connection mot databas.

/Fredrik Normén NSQUARED2


Svara

Sv: Transaction

Postades av 2003-09-28 17:56:12 - Andreas Brantmo

Tack så mycket för din utförliga beskrivning. Jag lyckades lösa det på liknande sätt.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 155
27 952
271 704
7 956
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies