Я хочу обновить одну строку моей базы данных.
Это банкомат, в котором вы сначала вводите номер карточного счета (он сохраняет этот номер для использования в различных формах). Затем вы вводите сумму для депозита. Проблема в том, что он обновляет каждую строку вместо одной строки, с которой связана карта.
Вот код:
sqlCommandDeposit.Connection.Open();
sqlCommandDeposit.Parameters["@cardNumber"].Value = Class1.cardNumber;
using (SqlDataReader reader = sqlCommandDeposit.ExecuteReader())
{
if (reader.Read())
{
balanceDB = decimal.Parse(reader["balance"].ToString());
}
}
}
finally
{
sqlCommandDeposit.Connection.Close();
}
decimal depositAmm = Convert.ToDecimal(textDeposit.Text);
balanceDB = balanceDB + depositAmm;
try
{
sqlDepositupdate.Connection.Open();
sqlDepositupdate.Parameters["@cardNumber"].Value = Class1.cardNumber;
sqlDepositupdate.Parameters["@balanceDB"].Value = balanceDB;
sqlDepositupdate.ExecuteNonQuery();
MessageBox.Show("£" + depositAmm + " Successfully Deposited and Deposit Number Saved");
MessageBox.Show("you have " + "£" + balanceDB + " available");
buttonClear.Enabled = true;
buttonExit.Enabled = true;
buttonMainMenu.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
sqlDepositupdate.Connection.Close();
}
А вот мое утверждение выбора, чтобы узнать текущий баланс:
SELECT dbo.Accounts.balance
FROM dbo.ATMCards
INNER JOIN dbo.Accounts ON dbo.ATMCards.accountID = dbo.Accounts.accountID
WHERE (dbo.ATMCards.cardNumber = @cardNumber)
А это оператор обновления:
UPDATE dbo.Accounts
SET balance = @balanceDB
FROM dbo.ATMCards
INNER JOIN dbo.Accounts AS Accounts_1 ON dbo.ATMCards.accountID = Accounts_1.accountID
CROSS JOIN dbo.Accounts
WHERE (dbo.ATMCards.cardNumber = @cardNumber)