КАТЕГОРИИ: Архитектура-(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; Просмотров: 322; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |