2011-01-12 26 views
35

¿Cuál es la manera más simple en C# (archivo .cs) para obtener el recuento del comando SQLrecuento de una consulta SQL

SELECT COUNT(*) FROM table_name 

en una variable int?

+0

¡Esta pregunta está explotando! 38379 visitas! – Dinuka

Respuesta

71

Uso SqlCommand.ExecuteScalar() y echarlo a un int:

cmd.CommandText = "SELECT COUNT(*) FROM table_name"; 
Int32 count = (Int32) cmd.ExecuteScalar(); 
+0

sí, el ejemplo allí también lo cubre, simplemente cambie 'INSERT INTO' para que sea su instrucción' SELECT' .. –

+0

En este caso, siempre habrá un valor de retorno de tipo int. En el caso más general, puede obtener un valor de retorno de DBNull, p. "seleccione ssn de la tabla 1 donde company_id = '112233'". Como no puede convertir el DBNull a su tipo de datos de retorno, tiene que probarlo y cambiarlo, ya sea en el SQL o en su aplicación. – SeaDrive

+0

Nunca obtendrás un DBNULL de Count() http://msdn.microsoft.com/en-us/library/ms175997.aspx –

15
SqlConnection conn = new SqlConnection("ConnectionString"); 
conn.Open(); 
SqlCommand comm = new SqlCommand("SELECT COUNT(*) FROM table_name", conn); 
Int32 count = (Int32) comm .ExecuteScalar(); 
+1

¿No es esto idéntico a mi respuesta? –

+1

Para mayor claridad, una cadena de conexión suele ser una cadena con información sobre la base de datos con la que está conectado. Un ejemplo: "Servidor = myServerAddress; Base de datos = myDataBase; Trusted_Connection = True;" Esto lo iniciará en la base de datos con las mismas credenciales que está ejecutando en su computadora. – erikric

8

Youll consigue la conversión de errores con

cmd.CommandText = "SELECT COUNT(*) FROM table_name"; 
Int32 count = (Int32) cmd.ExecuteScalar(); 

uso en lugar

 string stm = "SELECT COUNT(*) FROM table_name WHERE id="+id+";" ; 
     MySqlCommand cmd = new MySqlCommand(stm, conn); 
     Int32 count = Convert.ToInt32(cmd.ExecuteScalar()); 
     if(count > 0){ 
      found = true ; 
     } else { 
      found = false ; 
     } 
+0

Tengo una pregunta ... ¿y si quiero dónde en una cadena utilizando un cuadro de texto por ejemplo: - string stm = "SELECT COUNT (*) FROM table_name WHERE name =" + Name.Text .Trim() + "; " ; –

1

Como complemento en C# con SQL:

SqlConnection conn = new SqlConnection("ConnectionString"); 
     conn.Open(); 
     SqlCommand comm = new SqlCommand("SELECT COUNT(*) FROM table_name", conn); 
     Int32 count = Convert.ToInt32(comm.ExecuteScalar()); 
     if (count > 0) 
     { 
      lblCount.Text = Convert.ToString(count.ToString()); //For example a Label 
     } 
     else 
     { 
      lblCount.Text = "0"; 
     } 
     conn.Close(); //Remember close the connection 
Cuestiones relacionadas