I've got a utility function in a much larger project that updates a backend SQL database. It's currently failing most times I use it, with the error:
There is already an open DataReader associated with this Command which must be closed first.
The code for the function is below:
Public Function Update_Data(what As String, Optional where As String = "",
                            Optional table As String = ThisAddIn.defaultTable) As Integer
    Try
        Dim cmd As New SqlCommand With {
            .Connection = conn
        }
        cmd.CommandText = "UPDATE " & table & " SET " & what
        If where <> "" Then
            cmd.CommandText &= " WHERE " & where
        End If
        Update_Data = cmd.ExecuteNonQuery
        cmd.Dispose()
    Catch ex As Exception
        Update_Data = 0
        Debug.WriteLine("SQL Error updating data:" & vbCrLf & ex.Message)
    End Try
End Function
I've gone through the rest of the code to make sure that whenever I have a SQLDataReader declared I later call reader.close(). I added the cmd.Dispose() line to this and all the other ExecuteNonQuery functions I could find - incase that helped?
Are there any other instances/types of reader that might not be being closed?
 
    