Funktion doSQL zum Ausführen SQL
''' <summary>
''' Art einer auszuführenden SQL-Anweisung
''' </summary>
''' <remarks>SQL-Anweisung liefert einen Stringwert,
''' eine Anzahl von behandelten Zeilen,
''' eine Liste der Key-Werte oder
''' einen SQLDataReader mit einem Resultset</remarks>
Enum QueryReturns
Value
Count
Keys
Reader
End Enum
''' <summary>
''' Führt eine SQL-Anweisung aus
''' </summary>
''' <param name="queryReturns">mittels der Enum QueryReturns wird bestimmt,
''' welche Art von SQL-Anweisung auszuführen ist</param>
''' <param name="sqlStatement">Die vollständige SQL-Anweisung als String</param>
''' <returns>Zeilenanzahl, einzelner Stringwert oder SqlDataReader</returns>
''' <remarks>Dies passiert direkt in der Datenbank - nicht im Dataset!</remarks>
Private Function doSql(ByVal sqlStatement As String, ByVal queryReturns As QueryReturns) As Object
Dim returnValue As Object = Nothing
Try
'Vorbereitungen
sqlCmd.CommandType = CommandType.Text
sqlCmd.CommandText = sqlStatement
sqlCmd.Connection = New SqlConnection(SqlConnectionString)
'führe die Anweisung je nach Art aus
sqlCmd.Connection.Open()
Select Case queryReturns
Case queryReturns.Value 'liefert erste Spalte der ersten Zeile
returnValue = sqlCmd.ExecuteScalar().ToString
Case queryReturns.Count 'liefert Anzahl der Zeilen
returnValue = sqlCmd.ExecuteNonQuery()
Case DataAccess.QueryReturns.Keys
Dim list As New List(Of String)
returnValue = sqlCmd.ExecuteReader
'übernimm die SQLDataReader-Daten in die Liste
While returnValue.Read()
list.Add(returnValue(0))
End While
sqlCmd.Connection.Close()
Return list
Case queryReturns.Reader 'liefert den Reader
returnValue = sqlCmd.ExecuteReader
'log.Test("doSql.GetReader", returnValue.RecordsAffected & " Datensätze wurden zurückgegeben")
End Select
sqlCmd.Connection.Close()
'fertig
Return returnValue
Catch ex As Exception
log.Fault("doSqlGetValue", "Die Anweisung wurde nicht korrekt ausgeführt: " & vbCrLf _
& queryReturns.ToString & ": " & sqlStatement & vbCrLf & ex.Message)
Return Nothing
End Try
End Function


Links zu diesem Post:
Link erstellen
<< Startseite