2011-01-12 11 views

Odpowiedz

71

Zastosowanie SqlCommand.ExecuteScalar() i oddać go do int:

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

Tak, przykład w tym miejscu również obejmuje to, po prostu zmień 'INSERT INTO' na twoją instrukcję' SELECT' .. –

+0

W tym przypadku zawsze będzie zwracana wartość typu int. W bardziej ogólnym przypadku możesz otrzymać wartość zwracaną przez DBNull, np. "wybierz ssn z table1 gdzie company_id = '112233'". Ponieważ nie możesz przesłać nazwy DBNull do zwracanego typu danych, przetestuj ją i zmień w SQL lub w aplikacji. – SeaDrive

+0

Nigdy nie dostaniesz DBNULL z 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

Czy to nie jest moja odpowiedź? –

+1

Dla jasności, ciąg połączenia jest zazwyczaj ciągiem z informacją o tym, z którą bazą danych łączysz się. Przykład: "Server = myServerAddress; Database = myDataBase; Trusted_Connection = True;" Spowoduje to zalogowanie użytkownika do bazy danych przy użyciu tych samych poświadczeń, które są uruchomione na komputerze. – erikric

8

dostaniesz konwersji błędy z

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

użytku zamiast

 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

Mam pytanie ... co jeśli chcę, aby na ciąg znaków używając pola tekstowego np .: - string stm = "WYBIERZ COUNT (*) Z table_name WHERE name =" + Name.Text .Trim() + "; " ; –

1

Uzupełniając w C# z 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 
Powiązane problemy