2016-07-28 9 views
0

Ich möchte meine aktuelle SQL konvertieren Transaktionseigenschaft zu verwenden. Bisher habe ich rohe SQL-Funktion ausgeführt, wie Sie unten sehen können. Wie man es umwandelt, um auch Transaktion innerhalb dieser Funktion zu verwenden?Convert sql zur Verwendung der Transaktion

Public Function GetAllByKatId(Id As Integer) As Object 
    Dim result As Object 
    Dim dt As New DataTable 
    dt.Clear() 
    Using cnn As New SqlConnection(strcon) 
     cnn.Open() 
     Using dad As New SqlDataAdapter("SELECT * FROM tbGet WHERE [email protected]", cnn) 
      dad.SelectCommand.Parameters.Add(New SqlParameter("@id", Id)) 
      dad.Fill(dt) 

      If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then 
       result = dt 
      Else 
       result = Nothing 
      End If 
     End Using 
     cnn.Close() 
    End Using 
    Return result 
End Function 
+1

Jede Abfrage-Anweisung läuft bereits innerhalb einer Transaktion - dort in das Hinzufügen ein Extra keinen Sinn, wenn wir nur mit * ein * Erklärung zu tun. –

+0

Ja, aber ich möchte es auch mit Versuch fangen, wenn es Ihnen nichts ausmacht. Könnten Sie so freundlich sein und als Antwort geben? –

+0

Und es wird weitere Abfragen innerhalb später geben –

Antwort

0

die Transaktion von SqlConnection generieren - gilt es zu wählen, zu aktualisieren, einfügen, löschen Befehle in der SqlDataAdapter und dann je nach Bedarf Commit/Rollback aufrufen.

Public Function GetAllByKatId(Id As Integer) As Object 
    Dim result As Object 
    Dim dt As New DataTable 
    dt.Clear() 
    Using cnn As New SqlConnection(strcon) 
     cnn.Open() 
     dim trans as SqlTransaction 
     trans = cnn.BeginTransaction() 
     Using dad As New SqlDataAdapter("SELECT * FROM tbGet WHERE [email protected]", cnn) 
      dad.SelectCommand.Parameters.Add(New SqlParameter("@id", Id)) 
      dad.SelectCommand.Transaction = trans 
      dad.Fill(dt) 

      If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then 
       trans.Commit() 
       result = dt 
      Else 
       trans.Rollback() 
       result = Nothing 
      End If 
     End Using 
     cnn.Close() 
    End Using 
    Return result 
End Function