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