Pregunta

Me gustaría saber cómo puedo conseguir número de registros de una consulta con C #.

Este es el código que utilizo ..

    MySqlDataReader recordset = null;
    query = new MySqlCommand("SELECT * FROM test ORDER BY type_ID ASC", this.conn);
    recordset = query.ExecuteReader();


    while (recordset.Read())
    {
        result.Add(recordset["type_ID"].ToString());

    }
    return result;
¿Fue útil?

Solución

Yo estaba usando un SELECT COUNT(*) y esperaba un int a ser devuelto. Es posible que necesite esto para obtener un valor utilizable:

mysqlint = int.Parse(query.ExecuteScalar().ToString());

Otros consejos

Un par de cosas ...

La sentencia SQL que usaría es:

  

SELECT COUNT (*) de prueba

Sin embargo, cuando se utiliza el MySQL Connector / Net para conectarse a MySQL a C # hay algún tipo de atención que debe darse al manipular resultados de la consulta.

Por ejemplo, como se cita en esta pregunta y en < a href = "http://connect.microsoft.com/VisualStudio/feedback/details/253265/int32-parse-fails-to-convert-the-string-0-zero-on-some-systems" rel = "nofollow noreferrer "> Microsoft Connect int.Parse("0") equivalentemente conocido como Int32.Parse("0") puede lanzar una FormatException en algunas máquinas.

He encontrado que las manijas Convert.ToInt32 este caso muy bien.

Así que su código será algo como esto:

using (var conn = new MySqlConnection(cs))
{
    conn.Open();
    using (var cmd = new MySqlCommand("SELECT COUNT(*) FROM test", conn))
    {
         int count = Convert.ToInt32(cmd.ExecuteScalar());
         return count;
    }
}

Recuerde que debe hacer uso de mediante declaraciones con el fin de asegurar que los objetos MySQL quedan eliminados adecuadamente.

Se va a añadir un nuevo elemento en result para cada fila. Dependiendo del tipo de result usted debería ser capaz de hacer algo como result.Count después de ese tiempo se complete bucle.

Se puede ejecutar otra consulta primero para obtener el recuento:

query = new MySqlCommand("SELECT count(*) as theCount FROM test ORDER BY type_ID ASC", this.conn);

pero en verdad, usted es probablemente mejor cambiar el problema por lo que no necesita el recuento hasta después de haber llenado la lista.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top