Salve a tutti,
da poco utilizzo delle classi apposite per integarire con il database, ma ognitanto il mio db server mi va in palla perchè evidentemente non chiudo correttamente la connessione al DB (problemi di spooler che sinceramente non so cosa siano!).

Rivedendo le classi in efeftti mi sono accorto che la connessione non viene chiusa quando c'è un errore, allora volevo chiedere a voi un aiuto su come impostare correttamente la procedura.

Vi posto una routine di scrittura sul DB e vi chiedo se così può andar bene o se invece devo modificarla in qualche modo:

codice:
    Public Sub Salva(ByVal strStringaConnessione As String)

        ' Variabili Locali
        '
        Dim cmd_Scrive As New SqlCommand
        Dim cn As New SqlConnection(strStringaConnessione)
        Dim SQL_Scrive As String = vbNullString
        '
        ' Salva Dati
        '
        Try

            cmd_Scrive.Connection = cn
            cn.Open()
            '
            SQL_Scrive &= "INSERT INTO MyTable"
            SQL_Scrive &= "( "
            SQL_Scrive &= "dato1, "
            SQL_Scrive &= "dato2, "
            SQL_Scrive &= "dato3 "
            SQL_Scrive &= ") "
            SQL_Scrive &= "VALUES "
            SQL_Scrive &= "( "
            SQL_Scrive &= "@dato1, "
            SQL_Scrive &= "@dato2, "
            SQL_Scrive &= "@dato3 "
            SQL_Scrive &= ") "
            '
            cmd_Scrive.Parameters.AddWithValue("@dato1", SqlDbType.NText).Value = dato1
            cmd_Scrive.Parameters.AddWithValue("@dato2", SqlDbType.NText).Value = dato2           
            cmd_Scrive.Parameters.AddWithValue("@dato3", SqlDbType.NText).Value = dato3           
            '
            cmd_Scrive.CommandText = SQL_Scrive
            cmd_Scrive.ExecuteNonQuery()

        Catch ex As Exception

            ' Visualizza Messaggio di Errore
            '
            MessageBox.Show(ex.Message)

        Finally

            ' Chiude la connessione se aperta
            '
            If Not cn Is Nothing Then cn.Close()

        End Try

    End Sub
Un'altra cosa: è necessario anche fare un "cn.Dispose()" dopo aver chiuso la connessione?

GRAZIE MILLE a tutti.
Igor