| Украина, Киев |
Свойства и методы объекта Command
Обратите внимание - в блоке finally мы закрываем соединение, это нужно сделать в любом случае, независимо от результата выполнения команды. Значения, введенные пользователем в текстовые поля txtFamilyUpdate и txtTouristIDUpdate, помещаются в переменные Family и TouristID. В запросе к базе данных используются два параметра - @Family и @TouristID. Мы добавляем их в коллекцию объекта Command, используя метод Add свойства Parameters, а затем устанавливаем значения параметров равными переменным Family и TouristID. Конструктор метод Add перегружен, первый вариант принимает наибольшее количество свойств8Вообще-то, раньше свойства, входящие в какой-либо метод, мы называли параметрами. Здесь я не стал использовать это слово, чтобы не было путаницы с параметрами, входящими в коллекцию объекта Command. (рис. 6.23):
Описание некоторых свойств метода Add приводится в таблице 6.2.
| Свойство | Описание |
|---|---|
| parameterName | Название параметра |
| sqlDbType | Тип данных передаваемого параметра |
| size | Размер параметра |
| sourceColumn | Название имени столбца объекта DataSet, на который ссылается данный параметр |
Конструктор метода Add свойства Parameters объекта Command для поставщика данных OLE DB имеет в точности такую же структуру (рис. 6.24):
Добавляем обработчик кнопки 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):

Рис. 6.25. Готовое приложение ExamWinExecuteNonQuery. Таблицы взяты из SQL Server Enterprise Manager
В программном обеспечении к курсу вы найдете приложение Exam WinExecuteNonQuery (Code\Glava3\ ExamWinExecuteNonQuery).

