2014-04-11 68 views
-1

我正在使用C#winforms,嘗試執行求和查詢,並使用ExecuteScalar方法檢查是否有效。我在MessageBox顯示「總和」。使用ExecuteScalar方法求和查詢

我的問題:查詢簡化版,工作,因爲在MessageBox總和仍爲0

我的方法:

string Name = salesdetails.CmbEmployeeName.Text; 
     int sum = 0; 
     string connStr = @"Data Source=............................"; 
     string Query = ("SELECT SUM(PriceOrder) FROM tblOrdersFromCustomers WHERE CustomerID=N'" + Name + "'"); 

     using (SqlConnection conDataBase = new SqlConnection(connStr)) 
     { 
      SqlCommand cmdDataBase = new SqlCommand(Query, conDataBase); 

      try 
      { 
       conDataBase.Open(); 

       sum = (int)cmdDataBase.ExecuteScalar(); 
      } 

      catch 
      { 
      } 

     } 
     MessageBox.Show(string.Format("Sum: {0}", sum)); 
+0

有可能它不返回任何記錄。你是否直接對數據庫運行該查詢?你的所有'CustomerID'值是否都以'N'開頭或者是一個錯字?只是一些隨機的想法... –

+0

是您的CustomerID列在表中的字符串或是一個ID,你應該過濾不同的列? – kerry

+0

@GrantWinney'N'在引號之外。 – Silvermind

回答

0

首先,我認爲你的查詢有問題

即似乎你的表名是不正確的。

不是應該tblOrders而非tblOrdersFromCustomers

使用SqlCommand.ExecuteReader

using(reader = cmdDataBase.ExecuteReader()) 
{ 
    while (reader.Read()) 
    { 
     sum = reader[0]!=DBNull.Value?Convert.ToInt32(reader[0]):0; 
    } 
} 
+0

不工作。 C#是winforms嗎? – user3393134

+0

是的,你有什麼問題?檢查你的「查詢」是否正常? –

+0

嗯,總和仍然是零... – user3393134

0
sum = Convert.ToInt32(cmdDataBase.ExecuteScalar()); 
+0

它寫給我:不能轉換類型'System.Data.SqlClient.SqlDataReader'爲'int'。 – user3393134

+0

@ user3393134:不,它不會拋出錯誤,你確定嗎? –

+0

嗯仍然是零.. – user3393134