Я пытаюсь обновить свою базу данных, используя этот код. Появляется сообщение о том, что база данных обновлена neen, но записи не изменяются в базе данных. Вот коды, которые я использую. Пожалуйста, есть ли какие-либо ошибки, которые я совершаю?
private void titheEditBtn_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(@"Data Source=EPRAISE-PC;Initial Catalog=Cmanager;Integrated Security=True");
SqlCommand sqlcmd = new SqlCommand("Select Count(MemberID) from Tithe where MemberID = @MemberID", con);
sqlcmd.Parameters.AddWithValue("@MemberID", titheMemID.Text);
con.Open();
int UserExist = (int)sqlcmd.ExecuteScalar();
if (UserExist > 0)
{
SqlCommand sqlcmmd = new SqlCommand("Update Tithe SET Amount = @titheAmount, Date = @titheDate where MemberID = @MemberID AND Date = @titheDate");
sqlcmmd.Parameters.AddWithValue("@MemberID", titheMemID.Text);
sqlcmmd.Parameters.AddWithValue("@titheAmount", titheAmount.Text);
sqlcmmd.Parameters.AddWithValue("@titheDate", titheDateTime.Text);
sqlcmd.ExecuteScalar();
titheEditMsg.Visible = true;
}
else
{
MessageBox.Show("No Such Record Exists");
}
con.Close();
///titheEditMsg.Visible = false;
}
ExecuteScalar
возвращает некоторые данные, которые являются первой строкой первого столбца. Так как ваша команда UPDATE
, в этом случае нет смысла использовать ExecuteScalar
, потому что никакие данные не возвращаются в вашу команду.
Вам нужно использовать ExecuteNonQuery
во втором sqlcmmd
потому что ваша команда является UPDATE
и этот метод просто выполняет ваш запрос.
Также using
инструкцию using
для SqlConnection
и SqlCommand
.
И не используйте метод AddWithValue
. Это может привести к неожиданным результатам. Используйте SqlParameterCollection.Add()
или перегружает.
Читайте: Можем ли мы перестать использовать AddWithValue()
?
using(SqlConnection con = new SqlConnection(@"Data Source=EPRAISE-PC;Initial Catalog=Cmanager;Integrated Security=True"))
{
....
....
using(SqlCommand sqlcmmd = con.CreateCommand())
{
sqlcmmd.CommandText = "Update Tithe SET Amount = @titheAmount, Date = @titheDate where MemberID = @MemberID AND Date = @titheDate";
sqlcmmd.Parameters.Add("@MemberID").Value = titheMemID.Text;
sqlcmmd.Parameters.Add("@titheAmount").Value = titheAmount.Text;
sqlcmmd.Parameters.Add("@titheDate").Value = titheDateTime.Text;
con.Open();
sqlcmmd.ExecuteNonQuery();
}
}
SqlCommand
с помощью SqlCommand sqlcmmd = new SqlCommand("Update Tithe SET Amount = @titheAmount, Date = @titheDate where MemberID = @MemberID AND Date = @titheDate");
заявление. Что ты имеешь в виду?
sqlcmd.ExecuteScalar(); //Excute scalar give only Single Cell it Is not meaningful to use to update
sqlcmd.ExecuteNonQuery();// Use to Inser/Update Statement...