无法根据条件列出数据网格

本文关键字:数据 数据网 网格 条件 | 更新日期: 2023-09-27 18:19:10

[SOLVED] -必须将Id@更改为@Id。写错误。

我有这个申请注册健身房会员和他们的付款。在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@'无效。

你知道我哪里做错了吗?

无法根据条件列出数据网格

语法错误:Change Id@ to @Id所以:

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