Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
{ inventory.Add(new CarViewModel { Id = (int)dataReader["Id"], Color = (string)dataReader["Color"], Make = (string)dataReader["Make"], PetName = (string)dataReader["PetName"] }); } dataReader.Close(); return inventory;}Следующий метод выборки получает одиночный объект
CarViewModelCarIdpublic CarViewModel GetCar(int id){ OpenConnection(); CarViewModel car = null; // Параметры должны применяться по причинам, связанным с безопасностью. string sql = $@"SELECT i.Id, i.Color, i.PetName,m.Name as Make FROM Inventory i INNER JOIN Makes m on m.Id = i.MakeId WHERE i.Id = {id}"; using SqlCommand command = new SqlCommand(sql, _sqlConnection) { CommandType = CommandType.Text }; SqlDataReader dataReader = command.ExecuteReader(CommandBehavior.CloseConnection); while (dataReader.Read()) { car = new CarViewModel { Id = (int) dataReader["Id"], Color = (string) dataReader["Color"], Make = (string) dataReader["Make"], PetName = (string) dataReader["PetName"] }; } dataReader.Close(); return car;}На заметку! Помещение пользовательского ввода внутрь низкоуровневых операторов SQL, как делалось здесь, обычно считается неудачной практикой. Позже в главе код будет модифицирован для использования параметров.
Вставка новой записи об автомобиле
Вставка новой записи в таблицу Inventory сводится к построению SQL-оператора
InsertExecuteNonQuery()InventoryDalInsertAuto()InventoryColorMakePetNameSqlConnectionpublic void InsertAuto(string color, int makeId, string petName){ OpenConnection(); // Сформатировать и выполнить оператор SQL. string sql = $"Insert Into Inventory (MakeId, Color, PetName) Values ('{makeId}', '{color}', '{petName}')"; // Выполнить, используя наше подключение. using (SqlCommand command = new SqlCommand(sql, _sqlConnection)) { command.CommandType = CommandType.Text; command.ExecuteNonQuery(); } CloseConnection();}Приведенный выше метод принимает три значения для
CarCarСоздание строго типизированного метода InsertCar()
Добавьте в класс
InventoryDalInsertAuto()Carpublic void InsertAuto(Car car){ OpenConnection(); // Сформатировать и выполнить оператор SQL. string sql = "Insert Into Inventory (MakeId, Color, PetName) Values " + $"('{car.MakeId}', '{car.Color}', '{car.PetName}')"; // Выполнить, используя наше подключение. using (SqlCommand command = new SqlCommand(sql, _sqlConnection)) { command.CommandType = CommandType.Text; command.ExecuteNonQuery(); } CloseConnection();}Добавление логики удаления
Удаление существующей записи не сложнее вставки новой записи. В отличие от метода
InsertAuto()try/catchCustomersINSERTUPDATESqlException