Проблемы с обновлением базы данных

1

Я пытаюсь обновить свою базу данных, используя этот код. Появляется сообщение о том, что база данных обновлена 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;
    }
  • 1
    Что именно сообщение об ошибке?
  • 0
    Это не дает сообщение об ошибке
Теги:
database

2 ответа

0
Лучший ответ

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();
    }
}
  • 1
    Огромное спасибо. Это была проблема ... кроме того, что я не инициализировал мой SqlCommand.
  • 0
    @EmmanuelGiftEkwemuka Добро пожаловать. Вы фактически инициализируете свою SqlCommand с помощью SqlCommand sqlcmmd = new SqlCommand("Update Tithe SET Amount = @titheAmount, Date = @titheDate where MemberID = @MemberID AND Date = @titheDate"); заявление. Что ты имеешь в виду?
Показать ещё 3 комментария
1
   sqlcmd.ExecuteScalar(); //Excute scalar give only Single Cell it Is not meaningful to use to update

 sqlcmd.ExecuteNonQuery();// Use to Inser/Update Statement...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню