Dieses Code-Snippet verwende ich gerne zum Debuggen. Wenn man im Debugger einen Stoppunkt setzt, kann man im Direktfenster die Abfrage mit den Parameterinhalten ersetzt anzeigen.
Mir ist klar, dass das Snippet Mist liefert, wenn der Parameterinhalt gleich einem Parameternamen ist. Aber zum Debuggen funktioniert es. Mit Änderungen funktioniert es auch mit anderen Datenbank-Commands.
Module globales
''' <summary>
''' Übersetzt die Parameter eines SQLite-Commands in lesbaren Code
''' </summary>
''' <param name="com">SQLiteCommand</param>
''' <returns>String</returns>
Function see_sqlite(ByRef com As SQLiteCommand) As String
Dim types As New List(Of DbType)
Dim n, v As String
types.Add(DbType.Int16)
types.Add(DbType.Int32)
types.Add(DbType.Int64)
types.Add(DbType.Byte)
types.Add(DbType.UInt16)
types.Add(DbType.UInt32)
types.Add(DbType.UInt64)
types.Add(DbType.Decimal)
types.Add(DbType.Double)
Dim tmpsb As New Text.StringBuilder
tmpsb.Append(com.CommandText)
com.Parameters.Add("", DbType.Int16)
For Each pa As SQLiteParameter In com.Parameters
n = pa.ParameterName.ToString
If n <> "" Then
If pa.Value Is Nothing Then
v = ""
Else
v = pa.Value.ToString
End If
If types.Contains(pa.DbType) Then
tmpsb.Replace(n & " ", v & " ")
tmpsb.Replace(n & ")", v & ")")
tmpsb.Replace(n, v)
Else
tmpsb.Replace(n & " ", "'" & v & "' ")
tmpsb.Replace(n & ")", "'" & v & "')")
tmpsb.Replace(n, "'" & v & "'")
End If
End If
Next
Return tmpsb.ToString
End Function
End Module
Kommentare zum Snippet