0

[解決しよう] - Id@ を @Id に変更する必要がありました。書き間違い。

私は、GYM メンバー登録とその支払いのためのこのアプリケーションを持っています。MembersDataGridView で、行ヘッダーをダブルクリックすると、PaymentsDataGridView が開き、支払いリストが表示されます。これで、すべての支払いを完全に一覧表示できますが、特定のメンバーの支払いのみを一覧表示したいと考えています。Payments Id は、Members 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@' が無効です。

私が間違っていることは何ですか?

4

1 に答える 1

2

構文エラー: 次の ように変更Id@します。@Id

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

于 2013-06-19T07:27:44.383 に答える