Как обновить данные в базе данных

88
17 мая 2021, 02:00

Я работаю над WPF приложением, в нём есть DataGrid и он связан с базой данных. У меня есть методы для добавления и удаления данных из Базы и DataGrid.

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (SqlCommand command = new SqlCommand("INSERT INTO Student([FirstName], [LastName], [Address], [IndexNumber], [IdStudies]) " +
        "values(@fName,@lName,@address,@index,@study)", connection))
    {
        command.Parameters.AddWithValue("@fName", student.FirstName);
        command.Parameters.AddWithValue("@lName", student.LastName);
        command.Parameters.AddWithValue("@address", student.Address);
        command.Parameters.AddWithValue("@index", student.IndexNumber);
        command.Parameters.AddWithValue("@study", student.IdStudies);
        command.ExecuteNonQuery();
        Console.WriteLine("Should be added");
    }
    connection.Close();
}
studentsList.Add(student);

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (SqlCommand command = new SqlCommand("DELETE FROM Student 
                                    WHERE IdStudent=@id", connection))
    {
        command.Parameters.AddWithValue("@id", student.IdStudent);
        int affectedRows = command.ExecuteNonQuery();
        Console.Write(affectedRows);
    }
    connection.Close();
}

Но этот не работает:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (SqlCommand command = new SqlCommand($"Update Student set " +
        $"FirstName={student.FirstName}, LastName={student.LastName}, " +
        $"IndexNumber={student.IndexNumber}, Address={student.Address}, IdStudies={student.IdStudies} WHERE IdStudent={student.IdStudent}"))
    {
        int rows = command.ExecuteNonQuery();
        Console.WriteLine(rows);
    }
    connection.Close();
}

Первые два метода работают, а метод для обновления выдаёт ошибку:

System.InvalidOperationException: 'ExecuteNonQuery: Свойство Connection не инициализировано.'

connectionString у меня глобальная переменная.

Answer 1

Вы в первых 2 примерах в конструктор команды передаете подключение, а в третьем примере не передаете - потому у третьей команды проблема с подключением.

READ ALSO
Как создать загрузочный экран перед показом формы?

Как создать загрузочный экран перед показом формы?

У меня есть форма ( ScreenSplashcs ) которая показывает при запуске текст и проверяет некое bool значение

132
Можно ли использовать только primary key в MySQL таблице?

Можно ли использовать только primary key в MySQL таблице?

Дана MySQL БД для хранения анкет и результатов их заполнения

232
Получить данные из формы в файл php

Получить данные из формы в файл php

Мне надо вывести данные из формы в файл

94