C# Visual Studio и базы данных: подключаем Microsoft SQL Server Compact



Этим материалом я начну новую серию статей, посвященных работе с базой данных в C# Visual Studio с помощью Microsoft SQL Server Compact 3.5. В процессе работы мы создадим приложение Windows Forms, в котором можно будет работать с файлом базы данных в формате sdf: добавлять записи в таблицу, удалять и изменять их. Также бонусом приложение сделаем "работающим из коробки" и на максимальном количестве даже чистых операционных систем. Уровень статей рассчитан на начинающего разработчика, обладающего хотя бы минимальным опытом работы с Visual Studio.

Сначала необходимо скачать и установить Microsoft SQL Server Compact 3.5 - я качал отсюда. После этого добавляем ссылку в обозревателе решений: вкладка ".NET" - библиотека "System.Data.SqlServerCe.Entity". После создания проекта по шаблону Windows Forms, надо настроить подключение к базе данных, да и не мешало бы её создать. Выбираем "Обозреватель баз данных" - "Подключения данных" - "Добавить подключение" - Источник данных "Microsoft SQL Server Compact 3.5 (Поставщик данных среды .NET для Microsoft SQL Server Compact 3.5)" - создать базу данных (предположим Books.sdf) в любом месте на компьютере - Проверить подключение - Ок. Пароль не устанавливаем, можно выбрать сортировку по "Россия - русский".

Далее создаем таблицу в этой базе, назовем её tbBooks; в ней два столбца: id и name. id - тип int, уникальный; name - тип nvarchar, остальные параметры по умолчанию.

Создаем подключение:

SqlCeConnection cn = new SqlCeConnection(@"Data Source = C:\rab\base\Books.sdf");
Что такое? Visual Studio подчеркивает строку и показывает ошибку "Не удалось найти имя типа или пространство имен "SqlCeConnection" (пропущена директива using или ссылка на сборку?)"? У нас имеет место ошибка с директивой using:

using System.Data.SqlServerCe;
Теперь ошибка должна исчезнуть. Для работы с базами данных есть очень удобный инструмент DataGridView. Добавляем его на нашу форму и подключаем к источнику данных (нашей таблице в базе): "Добавить источник данных проекта" - "База данных" - "Набор данных" - Выбираем наше подключение Books.sdf. Среда может попросить перенести файл в рабочий каталог и изменить настройки подключения: соглашаться не стоит - мы не предатели. Выбираем нашу таблицу tbBooks и подтверждаем наше подключение.

Если сейчас запустить проект, то можно даже изменять ячейки нашей таблицы. Однако, теперь мы имеем сразу две проблемы: во-первых, в столбце id ввод не чисел выбивает страшную и непонятную ошибку, а во-вторых, изменения не сохраняются. Первая проблема решается просто:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {     
                TextBox tb = (TextBox)e.Control;
                tb.KeyPress += new KeyPressEventHandler(tb_KeyPress);
        }

void tb_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (dataGridView1.CurrentCell.ColumnIndex == 0)
            if (!(Char.IsDigit(e.KeyChar)))
            if (e.KeyChar != (char)Keys.Back) e.Handled = true;
        }
Вторая также несложно. Добавляем на форму кнопку, в обработчик вставляем следующий код:

SqlCeCommand command = new SqlCeCommand("UPDATE tbBooks SET id = @id, name = @name WHERE (id = @id)");
command.Connection = tbBooksTableAdapter.Connection;
tbBooksTableAdapter.Adapter.UpdateCommand = command;

SqlCeParameter parametr;

parametr = new SqlCeParameter("@id", SqlDbType.Int);
parametr.SourceColumn = "id";
command.Parameters.Add(parametr);

parametr = new SqlCeParameter("@name", DbType.String);
parametr.SourceColumn = "name";
command.Parameters.Add(parametr);

tbBooksTableAdapter.Update(booksDataSet.tbBooks);
MessageBox.Show("Изменения успешно сохранены");
Таким образом, в этой статье мы научились создавать базы данных, подключения к ним, таблицы в них, а также редактировать с помощью встроенного интерфейса.

Продолжение следует...
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, си шарп, базы данных, SQL, Visual Studio




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Как написать макрос для CorelDRAW на VBA: введение
Как создать ТЗ (техническое задание) на программу или сайт
Бизнес и PHP