[解決しよう] - 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@' が無効です。
私が間違っていることは何ですか?