[已解决] - 必须将 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 = Id@";
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;
}
我在 PaymentsForm 上使用它:
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 未处理。
列名“Id@”无效。
知道我做错了什么吗?