¿El siguiente código utiliza buenas prácticas? Todo lo que quiero hacer es contar el número de filas que tiene cualquier usuario:
objSQLCommand = New SqlCommand("select count(id) as record_count from table1 where user = @strUser", objSQLConnection)
objSQLCommand.Parameters.Add("@strUser", SqlDbType.VarChar, 3).Value = strUser
objSQLCommand.Connection.Open()
objSQLDataReader = objSQLCommand.ExecuteReader()
objSQLDataReader.Read()
intRecordCount = objSQLDataReader("record_count")
objSQLDataReader.Close()
objSQLCommand.Connection.Close()
Respuestas
2 para la respuesta № 1Como está devolviendo un valor único, puede usar ExecuteScalar en lugar del lector.
Ver muestra aquí.
3 para la respuesta № 2
Yo sugeriría:
Convertir el comando a un almacenado procedimiento
Haga que el SP devuelva la cuenta como su solo salida
Luego use ExecuteScalar (no necesita un lector)
Ajuste usando alrededor de la conexión y comando para disponer adecuadamente.
2 para la respuesta № 3
¿Por qué no usar LINQ to Entities? Su código tiene una sensación de distorsión de tiempo ...
1 para la respuesta № 4
No es una práctica terrible, según lo que dijeron @amelvin y @ChrisW. Y...
podría concluir su consulta sql en un Procedimiento almacenado, solo dos líneas son diferentes:
objSQLCommand = New SqlCommand("GetCountByUser", objSQLConnection);
objSQLCommand.CommandType = CommandType.StoredProcedure;
En una nota de diseño, probablemente podría mantener la referencia del usuario como ID en lugar de usar un VarChar para cada fila:
ES DECIR
Tabla de usuarios
Nombre de identificación Correo electrónico
1 Oshirowanen Oshirowanen@hotmail.com
2 5arx 5arx@test.com
3 JeffA jeffattwood@stackexchange.com
RecordTable
ID de usuario ID Otras columnas
1234 1 Oshirenin 1
1235 1 Oshirenin 2
1236 2 5arx "s columna # 1
1237 3 Jeff Attwood estuvo aquí
1238 2 Otra de las columnas de 5arx
Por lo tanto, puede llamarlo (en proceso almacenado o SQL en línea) con la identificación numérica del usuario. Este enfoque le impide duplicar el nombre de usuario en cada fila de la tabla de registro.