Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример программы 4.3




Листинг 4.2.

 

Научившись отображать данные с помощью элемента управления DataGridView, вы, наверное, обратили внимание, что внесенные в базу изменения не сохраняются. Поэтому применим другой подход и осуществим "двухстороннюю привязку данных", которая позволит не только просматривать открывшуюся таблицу, но и вводить изменения в элемент DataGridView, добавляя новые строки, изменяя содержимое имеющихся строк и удаляя ненужные. Объекты класса DataAdapter способны выполнять как операциюSelect, получая данные запроса из базы данных, так и команды Insert, Update, Delete, изменяя содержимое таблицы базы данных.

Здесь мы позволим себе маленькую хитрость (это называется "повысить производительность труда") и не станем самостоятельно прописывать операторы UPDATE и INSERT. Пространство имен System.Data содержит небольшой, но очень полезный класс CommandBuilder, который умеет создавать команды SQL и автоматически их выполнять.

using System;

using System.Windows.Forms;

using System.Data;

// Пространство имен для работы с базами данных SQL Server

using System.Data.SqlClient;

using System.Drawing;

using System.Diagnostics;

class DataInOutGrid: Form

{

SqlDataAdapter dataAdapter;

DataGridView dataGridView;

public DataInOutGrid()

{

//Изменяем размеры формы

this.Width = 450;

this.Height = 400;

 

// Указываем заголовок окна

this.Text = "Двустороннее связывание:" +

" база данных и элемент Grid.";

// Добавляем элементы управления -

//метку, таблицу и командную кнопку

Label labelCaption = new Label();

labelCaption.Text = "Планеты!";

labelCaption.Location = new Point(60, 10);

labelCaption.Width = 200;

labelCaption.Parent = this;

 

// Добавляем элемент DataGridView на форму

 

dataGridView = new DataGridView();

dataGridView.Width = 350;

dataGridView.Height = 250;

dataGridView.Location = new Point(20, 50);

dataGridView.AutoResizeColumns();

this.Controls.Add(dataGridView);

 

// Добавляем командную кнопку

Button buttonSave = new Button();

buttonSave.Location = new Point(100, 320);

buttonSave.Width = 220;

buttonSave.Text = "Сохранить изменения в базе данных!";

buttonSave.Click +=

new System.EventHandler(ButtonSave_Click);

buttonSave.Parent = this;

 

// Формируем запрос к базе данных -

//запрашиваем информацию о планетах

string sql = "SELECT * FROM PLANET";

string connectionString;

// DataTable сохраняет данные в памяти как таблицу

DataTable dataTable = new DataTable();

/*

//Вариант 1

// Подключаемся к базе данных SQL Server Express Edition

 

// Указываем физический путь к базе данных PLANETS

string dbLocation =

("../../../databases/planets.mdf");

 

connectionString = @"data source=.\SQLEXPRESS;" +

"User Instance=true;Integrated Security=SSPI;" +

"AttachDBFilename=" + dbLocation;

SqlConnection connection1 = new SqlConnection(connectionString);

*/

 

//Вариант 2

// Подключаемся к базе данных SQL Server 2005

connectionString =

"data source = localhost; Initial Catalog = Planets;" +

"Integrated Security = SSPI";

SqlConnection connection = new SqlConnection(connectionString);

 

//Открываем соединение

connection.Open();

 

//Создаем команду

SqlCommand sqlCommand = new SqlCommand(sql, connection);

//Создаем адаптер

// DataAdapter - посредник между базой данных и DataSet

dataAdapter = new SqlDataAdapter(sqlCommand);

 

//Создаем построитель команд

//Для адаптера становится доступной команда Update

SqlCommandBuilder commandBuilder =

new SqlCommandBuilder(dataAdapter);

 

// Данные из адаптера поступают в DataTable

dataAdapter.Fill(dataTable);

// Связываем данные с элементом DataGridView

dataGridView.DataSource = dataTable;

// Очистка

connection.Close();

}

 

static void Main()

{

// Создаем и запускаем форму

Application.Run(new DataInOutGrid());

}

void ButtonSave_Click(object sender, System.EventArgs args)

{

try

{

dataAdapter.Update((DataTable)dataGridView.DataSource);

MessageBox.Show("Изменения в базе данных выполнены!",

"Уведомление о результатах", MessageBoxButtons.OK);

}

catch(Exception)

{

MessageBox.Show("Изменения в базе данных выполнить не удалось!",

"Уведомление о результатах", MessageBoxButtons.OK);

}

}

}




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 296; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.006 сек.