2013-06-19 50 views
0

[已解決] - 必須將Id @更改爲@Id。寫錯誤。無法根據條件列出數據網格

我有註冊GYM成員和他們的付款這一應用。在MembersDataGridView上,當您雙擊行標題時,PaymentsDataGridView將以付款清單打開。現在,我可以完全列出所有付款,但我只想列出特定成員的付款。付款ID等同於會員ID。 所以,如果一個會員ID是100,所有他/她支付的ID將是100

我正在使用此代碼調用從數據庫中支付:

 public List<Payment> ListPayments(Payment entity) 
     { 
      List<Payment> Payments = new List<Payment>(); 

      string SELECT = "SELECT * FROM Payments WHERE Id = [email protected]"; 

      using (sqlConnection = new SqlConnection(sqlConnectionString_WORK)) 
      { 
       sqlConnection.Open(); 

       using (SqlCommand sqlCommand = new SqlCommand(SELECT, sqlConnection)) 
       { 
        sqlCommand.Parameters.Add("@Id", SqlDbType.Int).Value = entity.Id; 

        var sqlReader = sqlCommand.ExecuteReader(); 

        while (sqlReader.Read()) 
        { 
         var payment = new Payment 
         { 
          Id = Convert.ToInt32(sqlReader["Id"]), 
          Amount = Convert.ToDecimal(sqlReader["Amount"]), 
          StartDay = Convert.ToDateTime(sqlReader["StartDay"]), 
          EndDay = Convert.ToDateTime(sqlReader["EndDay"]) 
         }; 

         Payments.Add(payment); 
        } 
       } 
      } 

      return Payments; 
     } 

而且我用這個在付款表單上:

private void PaymentsForm_Load(object sender, EventArgs e) 
{ 
    var payment = new Payment 
    { 
     Id = IdTextBox.Text.ToIntOrZero() 
    }; 

    PaymentsDataGridView.DataSource = Connection.ListPayments(payment); 
} 

PaymentsForm包含成員信息的文本框。 IdTextBox包含成員的ID,我從中獲取ID以列出所有付款。現在,當我嘗試列出會員的支付,我得到這個例外在var sqlReader = sqlCommand.ExecuteReader();部分:

SQLException was unhandled.

Invalid column name '[email protected]'.

任何想法,我做錯了嗎?

回答

2

語法錯誤:更改[email protected]@Id 使:

string SELECT = "SELECT * FROM Payments WHERE Id = @Id";

+0

喔..現在我感覺遲鈍。謝謝你:) – Etrit

+0

不要編輯你的問題,並寫'解決',你必須接受一個答案,以標記它解決。 –

+0

我標記了你的答案。在我做之前,我只需要等待10分鐘。再次感謝! – Etrit