Опубликован: 05.08.2007 | Доступ: свободный | Студентов: 2201 / 83 | Оценка: 4.47 / 4.09 | Длительность: 20:11:00
ISBN: 978-5-9556-0097-0
Лекция 6:

Свойства и методы объекта Command

< Лекция 5 || Лекция 6: 123456 || Лекция 7 >

Обратите внимание - в блоке finally мы закрываем соединение, это нужно сделать в любом случае, независимо от результата выполнения команды. Значения, введенные пользователем в текстовые поля txtFamilyUpdate и txtTouristIDUpdate, помещаются в переменные Family и TouristID. В запросе к базе данных используются два параметра - @Family и @TouristID. Мы добавляем их в коллекцию объекта Command, используя метод Add свойства Parameters, а затем устанавливаем значения параметров равными переменным Family и TouristID. Конструктор метод Add перегружен, первый вариант принимает наибольшее количество свойств8Вообще-то, раньше свойства, входящие в какой-либо метод, мы называли параметрами. Здесь я не стал использовать это слово, чтобы не было путаницы с параметрами, входящими в коллекцию объекта Command. (рис. 6.23):

 Конструктор метода Add свойства Parameters объекта  Command

Рис. 6.23. Конструктор метода Add свойства Parameters объекта Command

Описание некоторых свойств метода Add приводится в таблице 6.2.

Таблица 6.2. Свойства метода Add
Свойство Описание
parameterName Название параметра
sqlDbType Тип данных передаваемого параметра
size Размер параметра
sourceColumn Название имени столбца объекта DataSet, на который ссылается данный параметр

Конструктор метода Add свойства Parameters объекта Command для поставщика данных OLE DB имеет в точности такую же структуру (рис. 6.24):

 Конструктор метода Add свойства Parameters объекта Command поставщика данных OLE DB

Рис. 6.24. Конструктор метода Add свойства Parameters объекта Command поставщика данных OLE DB

Добавляем обработчик кнопки btnInsert:

private void btnInsert_Click(object sender, System.EventArgs e)
{
	try
	{
		int TouristID = int.Parse(this.txtTouristIDInsert.Text);
		string Family = Convert.ToString(this.txtFamilyInsert.Text);
		string FirstName = Convert.ToString(this.txtFirstNameInsert.Text);
		string MiddleName = Convert.ToString(this.txtMiddleNameInsert.Text);
		conn = new SqlConnection();
		conn.ConnectionString = "integrated security=SSPI;data 
		 source=\".\"; persist security info=False;
		 initial catalog=BDTur_firm2";
		conn.Open();
		SqlCommand myCommand = conn.CreateCommand();
		myCommand.CommandText =
		 "INSERT INTO Туристы (Кодтуриста, Фамилия, Имя, Отчество)
		 VALUES (@TouristID, @Family, @FirstName, @MiddleName)";
		myCommand.Parameters.Add("@TouristID", SqlDbType.Int, 4);
		myCommand.Parameters["@TouristID"].Value = TouristID;
		myCommand.Parameters.Add("@Family", SqlDbType.NVarChar, 50);
		myCommand.Parameters["@Family"].Value = Family;
		myCommand.Parameters.Add("@FirstName",
		 SqlDbType.NVarChar, 50);
		myCommand.Parameters["@FirstName"].Value = FirstName;
		myCommand.Parameters.Add("@MiddleName",
		 SqlDbType.NVarChar, 50);
		myCommand.Parameters["@MiddleName"].Value = MiddleName;
		int UspeshnoeIzmenenie = myCommand.ExecuteNonQuery();
		if (UspeshnoeIzmenenie !=0)
		{
			MessageBox.Show("Изменения внесены",
			 "Изменение записи");
		}
		else
		{
			MessageBox.Show("Не удалось внести изменения",
			 "Изменение записи");
		}

	}
	catch(Exception ex)
	{
		MessageBox.Show(ex.ToString());
	}
	finally
	{
		conn.Close();
	}
}

В запросе используются четыре параметра: @TouristID, @Family, @FirstName, @MiddleName. Тип данных создаваемых параметров соответствует типу данных полей таблицы "Туристы" в базе.

Добавляем обработчик кнопки btnDelete:

private void btnDelete_Click(object sender, System.EventArgs e)
{
	try
	{
		int TouristID = int.Parse(this.txtTouristIDDelete.Text);
		conn = new SqlConnection();
		conn.ConnectionString = "integrated security=SSPI;data
		 source=\".\"; persist security info=False;
		 initial catalog=BDTur_firm2";
		conn.Open();
		SqlCommand myCommand = conn.CreateCommand();
		myCommand.CommandText = "DELETE FROM Туристы
		 WHERE Кодтуриста = @TouristID";
		myCommand.Parameters.Add("@TouristID", SqlDbType.Int, 4);
		myCommand.Parameters["@TouristID"].Value = TouristID;
		int UspeshnoeIzmenenie = myCommand.ExecuteNonQuery();
		if (UspeshnoeIzmenenie !=0)
		{
			MessageBox.Show("Изменения внесены", 
			 "Изменение записи");
		}
		else
		{
			MessageBox.Show("Не удалось внести изменения",
			 "Изменение записи");
		}

	}
	catch(Exception ex)
	{
		MessageBox.Show(ex.ToString());
	}
	finally
	{
		conn.Close();
	}
}

Запускаем приложение. В каждой из групп заполняем поля, затем нажимаем на кнопки. Проверять результат можно, запуская SQL Server Enterprise Manager и просматривая каждый раз содержимое таблицы "Туристы" (рис. 6.25):

 Готовое приложение ExamWinExecuteNonQuery. Таблицы взяты из SQL Server Enterprise Manager

Рис. 6.25. Готовое приложение ExamWinExecuteNonQuery. Таблицы взяты из SQL Server Enterprise Manager

В программном обеспечении к курсу вы найдете приложение Exam WinExecuteNonQuery (Code\Glava3\ ExamWinExecuteNonQuery).

< Лекция 5 || Лекция 6: 123456 || Лекция 7 >