2016-06-09 6 views
0

Ich versuche, eine E-Mail-Zusammenfassung zu senden, um anzuzeigen, wie viele Dateien insgesamt leer oder voll in meiner Tabelle sind, wie in der Abfrage gezeigt. Meine Frage ist, wie ich einen Zähler für die gesamte leere/vollständige Dateien erstellen und dann die Gesamtzahl der beiden! Jede Hilfe würde sehr geschätzt werdenGesamtzählung in C#

// Connection String 
      string ConnectionString = @"Data Source= (localdb)\Projects;Initial Catalog=Database; Integrated Security=True;Connect Timeout=30;Encrypt=False;"; 
      SqlDataReader reader; 
      String SendMessage = "Select * FROM Files where Full = 1 or Empty = 2"; 
      using (SqlConnection MyCon = new SqlConnection(ConnectionString)) 
      { 
       MyCon.Open(); 
       SqlCommand cmd = new SqlCommand(SendMessage, MyCon); 
       ArrayList EmailArray = new ArrayList(); 
       reader = cmd.ExecuteReader(); 

       var Email = new List<EmailSend>(); 

       while (reader.Read()) 
       { 

        Email.Add(new EmailSend 
        { 


         Full = Convert.ToString(reader["Full"]), 
         Empty = Convert.ToString(reader["Empty"]), 

        }); 
       } 

Antwort

1

Alles falsch mit nur dies in der Sql tun?

string SendMessage = @" 
      SELECT (SELECT COUNT(*) FROM Files where Full = 1) AS CountFull, 
        (SELECT COUNT(*) FROM Files where Empty = 2) AS CountEmpty" 

ersetzen Dann while(reader.Read()) Schleife mit

int countFull=-1,countEmpty =-1; 

if(reader.Read()) 
{ 
countFull = (int)reader["CountFull"]; 
countEmpty = (int)reader["CountEmpty"]; 
} 

int fullOrEmpty = countFull+countEmpty; 
+1

Warum sind Sie die ganzen Zahlen als -1 initialisiert? Sollte 0 sein, denke ich. Sie sollten sich nicht auf eine negative Ganzzahl verlassen, um einen Fehler oder Status anzuzeigen. – Lebowski156

+0

Was ist los mit 'while (reader.Read())' –

+0

Vielen Dank für Ihre Antworten – Dodi