Ok.., lo te te puedo recomendar es que cuando utilices algun update, insert y /o delete como no vas a regresar ninguna informacion te recomiendo que lo hagas con un executenonquery
Ejemplo:
Cita: dim str as String
str = "delete.., update.. etc."
Dim myConnection As New SqlConnection(ConfigurationSettings.AppSettings("c onnectionString"))
Dim myCommand As New SqlCommand(str , myConnection)
e inmediatamente abres la conexion, ejecutas y cierras.
Cita: myConnection.Open()
myCommand.ExecuteNonQuery()
myConnection.Close()
Y si quieres hacer mas elegante puedes usar un SP le pasas el parámetro y lo ejecutas.
Ahora, en cuanto a
Cita: Tu dices q usando el dataset es muy lento.
Efectivamente un dataset es un poco mas lento que un command con un datareader, ya que un datareader solo va hacia adelante mientras que en el dataset genera el esquema (esquema XML), el propio XML y luego lo pasa a algun control por ejemplo un datagrid además de que puedes accesar a cualquier registro de la tabla que te hayas traído..sería mas o menos el equivalente al cursor adOpenDynamic de la version anterior de ado.
Claro que no por ésto quiere decir que siempre sea una regla, recuerda que todo depende de lo que estés haciendo.
Espero que te hayas dado una mejor idea.
Saludos