Чтение онлайн

на главную - закладки

Жанры

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Троелсен Эндрю

Шрифт:

static void Main(string[] args) {

 Console.WriteLine ("***** Модификатор Inventory для Car *****");

 bool userDone = false;

 string userCommand = "";

 SqlConnection cn = new SqlConnection;

 cn.ConnectionString = "uid=sa;pwd=;Initial Catalog=Cars;" +

"Data Source=(local);Connect Timeout=30";

 cn.Open;

 ShowInstructions;

 do {

Console.Write("Введите
команду: ");

userCommand = Console.ReadLine;

Console.WriteLine;

switch (userCommand.ToUpper) {

case "I":

InsertNewCar(cn);

break;

case "U":

UpdateCarPetName(cn);

break;

case "D":

DeleteCar(cn);

break;

case "L":

ListInventory(cn);

break;

case "S":

ShowInstructions;

break;

case "Q":

userDone = true;

break;

default:

Console.WriteLine("Некорректные данные! Введите другие");

break;

}

 } while (!userDone);

 cn.Close;

}

Метод ShowInstructions делает то, что и следует ожидать.

private static void ShowInstructions {

 Console.WriteLine;

 Console.WriteLine("I: добавление новой машины.");

 Console.WriteLine("U: модификация имеющейся машины.");

 Console.WriteLine("D: удаление имеющейся машины.");

 Console.WriteLine("L: список наличных машин.");

 Console.WriteLine("S: вывод инструкций.");

 Console.WriteLine(''Q: выход из программы.");

}

Как уже упоминалось, метод ListInventorу печатает строки таблицы Inventory с помощью объекта чтения данных (соответствующий программный код аналогичен программному коду предыдущего примера CarsDataReader).

private static void ListInventory(SqlConnection cn) {

 string strSQL = "Select * From Inventory";

 SqlCommand myCommand = new SqlCommand(strSQL, cn);

 SqlDataReader myDataReader;

 myDataReader = myCommand.ExecuteReader;

 while (myDataReader.Read) {

for (int i = 0; i ‹ myDataReader.FieldCount; i++) {

Console.Write("{0} = {1}"; myDataReader.GetNаmе(i), myDataReader.GetValue(i).ToString.Trim);

}

Console.WriteLine;

 }

 myDataReader.Close;

}

Итак,

текстовый интерфейс пользователя готов, и мы можем теперь перейти к более интересным вещам.

Вставка новых записей

Для вставки новой записи в таблицу Inventory нужно (на основе пользовательского ввода) создать SQL-оператор вставки и вызвать ExecuteNonQuery. Чтобы не загромождать программный код, здесь из него удалена необходимая программная логика try/catch, которая присутствует в загружаемом варианте программного кода примеров для этой книги.

private static void InsertNewCar(SqlConnection cn) {

 // Сбор информации о новой машине.

 Console.Write("Введите номер машины: ");

 int newCarID = int.Parse(Console.ReadLine);

 Console.Write("Введите марку: ");

 string newCarMake = Console.ReadLine;

 Console.Write("Введите цвет: ");

 string newCarColor = Console.ReadLine;

 Console.Write("Введите название: ");

 string newCarPetName = Console.ReadLine;

 // Создание и выполнение оператора SQL.

 string sql = string.Format("Insert Into Inventory" +

"(CarID, Make, Color, PetName) Values" +

"({0}', '{1}', '{2}', '{3}')",

newCarID, newCarMake, newCarColor, newCarPetName);

 SqlCommand cmd = new SqlCommand(sql, cn);

 cmd.ExecuteNonQuery;

}

Замечание. Вы, возможно, знаете, что построение SQL-операторов с помощью конкатенации строк достаточно рискованно с точки зрения безопасности (вспомните о возможных атаках SQL-инъекции). Здесь этот подход используется только для простоты, поскольку, конечно же, предпочтительнее строить текст команд с помощью параметризованных запросов, обсуждение которых предполагается немного позже.

Поделиться:
Популярные книги

Отмороженный 8.0

Гарцевич Евгений Александрович
8. Отмороженный
Фантастика:
постапокалипсис
рпг
аниме
5.00
рейтинг книги
Отмороженный 8.0

Газлайтер. Том 14

Володин Григорий Григорьевич
14. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 14

Ермак. Телохранитель

Валериев Игорь
2. Ермак
Фантастика:
альтернативная история
7.00
рейтинг книги
Ермак. Телохранитель

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV

Сборник коротких эротических рассказов

Коллектив авторов
Любовные романы:
эро литература
love action
7.25
рейтинг книги
Сборник коротких эротических рассказов

Идеальный мир для Лекаря 19

Сапфир Олег
19. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 19

Дочь моего друга

Тоцка Тала
2. Айдаровы
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Дочь моего друга

Свет Черной Звезды

Звездная Елена
6. Катриона
Любовные романы:
любовно-фантастические романы
5.50
рейтинг книги
Свет Черной Звезды

Кодекс Крови. Книга IV

Борзых М.
4. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IV

Идеальный мир для Лекаря 22

Сапфир Олег
22. Лекарь
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 22

Попаданка в академии драконов 4

Свадьбина Любовь
4. Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.47
рейтинг книги
Попаданка в академии драконов 4

Сердце Дракона. Том 12

Клеванский Кирилл Сергеевич
12. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.29
рейтинг книги
Сердце Дракона. Том 12

Лолита

Набоков Владимир Владимирович
Проза:
классическая проза
современная проза
8.05
рейтинг книги
Лолита

Сводный гад

Рам Янка
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Сводный гад