Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 576
Эндрю Троелсен
• S – показать эти варианты выбора пользователю;
• Q - выйти из программы.
Каждый возможный вариант обрабатывается своим уникальным статическим методом в рамках класса Program. Для полной ясности вот реализация Main(), которая, как кажется, не требует никаких дополнительных комментариев.
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();