Ci sono alcune cosette da considerare:
1) prima di tutto è consigliabile utilizzare nomi più 'logici'.
read è il nome di un metodo, usarlo come nome di un oggetto è da temerari e può solo creare confusione.
2) prima di accedere al DataReader è buona norma verificare che contenga righe,
metti che un'altro utente abbia cancellato il record. Per cui:
codice:
If read.HasRows Then
' proseguo
End If
3) il metodo Read legge una riga del DataReader, quindi l'istruzione
Dim s As Object = read(0).ToString
è sbagliata sia perchè usa il metodo in maniera scorretta, sia perchè tenti di assegnare uno String ad un Object.
Si dovrebbe usare uno degli appositi metodi, ad esempio:
codice:
Dim s As String = read.GetValue(0).ToString