/ / Obtener el recuento de usuarios de la base de datos: .net, asp.net, sql, vb.net, .net-3.5

Obtener el recuento de usuarios de la base de datos: .net, asp.net, sql, vb.net, .net-3.5

¿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 № 1

Como 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.