Блок схема начало подключение к базе данных с помощью компьютера datasource

Обновлено: 05.07.2024

СУБД прошли долгий путь развития. В начале все данные хранили в простых(плоских) файлах. По мере увеличения объемов данных встал вопрос о том, как получить быстрый доступ к нужной информации. Для этого данные стали индексироваться. Другой вопрос – как избежать дублирования – когда одни и те же данные хранятся в разных местах. Чтобы ее решить, была разработана теория нормализации баз данных. Сегодня мощная промышленная СУБД немыслима без систем защиты информации, журналирования, транзакций и хранимых процедур.

Данные в СУБД хранятся в таблицах. Таблица состоит из полей и записей. Запись – единица хранения данных, строка таблицы. Например, в одной записи хранятся сведения об одном человеке. Поля – это столбцы таблицы для хранения конкретного вида информации. Базы данных называются реляционными, потому что таблицы в них связаны определенным образом.

Представления(View) создаются на основе одной или нескольких таблиц с помощью фильтрации, объединения, сортировки и группирования.

Для наглядности рассмотрим эти понятия на примере. В свое время я работала с базой данных кадров одного предприятия. Как создать такую базу? Прежде всего нам нужна таблица для хранения данных о сотрудниках.

ID Имя Фамилия Отчество Дата рождения Дата приема Должность
1 Петр Васечкин Иванович 1965 2001 Завхоз
2 Василий Петров Сидорович 1977 2003 Программист


и так далее. Таблица может иметь тысячи записей.

Отделу кадров нужна информация о перемещениях сотрудников. Для этого заведена отдельная таблица. Например, Петров получил должность старшего программиста. Прежде всего надо заметить, что названий должностей ограниченное количество. Чтобы избежать дублирования, лучше их хранить в отдельной таблице.

ID Название должности Минимальный оклад
1 Директор 1
2 Завхоз 10
3 Программист 20
4 Уборщица 100 ID Сотрудник Должность Назначение Дата
1235 123 10 11 20.06.06


Таблица «Должности» связана как с таблицей сотрудников, так и с таблицей перемещений по своему уникальному ключу. База данных может генерировать первичные ключи сама, автоматически добавляя значения к предыдущему значению ключа. Это называется автоинкрементированием. Для полной уверенности в уникальности данных в таблицах могут держать точное время создания записи(Timestamp) и GUI(глобальный уникальный идентификатор).

Этот процесс называется нормализацией. Чтобы для отчета восстановить информацию о перемещении, в запросе нужно связать данные из разных таблиц.

В результате этого запроса будет создано представление, которое покажет данные из взаимосвязанных таблиц в удобной для чтения форме:

Множество таблиц данных, связанных отношениями, составляют базу данных. На сервере СУБД может храниться множество баз данных.

Подробнее о теории баз данных можно прочитать в других курсах. Перейдем к конкретным примерам связывания с базами данных на веб-страницах.

У каждого пользователя Windows наверняка имеется программа Access. Это однопользовательская СУБД, в которой модель безопасности не так сильна. В одном файле Access хранятся как данные, так и интерфейс в виде форм и отчетов. Можно создавать модули на VBA (Visual Basic for Application). Профессиональные разработчики пользуются более мощными программами. По «серьезности» СУБД от Microsoft идут в порядке – Access – FoxPro – MS SQL. MS SQL не позволяет создавать формы, а занимается хранением и защитой данных на профессиональном уровне. Visual Studio 2005 (и VWD) при инсталляции устанавливает MS SQL Express. Он будет запускаться автоматически в виде сервиса Windows.

Для работы с базами данных используется язык структурированных запросов – SQL (Structured Query Language). Команды этого языка называются запросами. Запросы служат для получения данных, для создания и изменения структуры таблиц, добавления, удаления и обновления записей и многого другого. Последовательность команд может храниться прямо на сервере СУБД в виде хранимой процедуры. Нужно стараться всегда пользоваться хранимыми процедурами, а не писать команды самим. Главное их преимущество – скорость работы и инкапсуляция бизнес-логики. Хранятся они на сервере в уже откомпилированном виде, в то время как простой переданный набор команд SQL проходит через стадию компиляции.

Для конфигурирования источников данных на вашем компьютере зайдите в Control Panel, Administrative Tools, Data Sources(ODBC).

Мы видим, что ODBC при наличии нужного драйвера позволяет связываться с различными базами данных – Access, FoxPro, Oracle, Microsoft SQL, MySQL, SAP, DB2. Если в файле Excel создать именованную таблицу, ODBC способен ее распознать и работать как с таблицей базы данных.

В System.Data.OleDb находятся классы, позволяющие работать с источниками данных OleDb, в том числе с MS SQL версии 6.0 и ниже. Там находятся такие классы, как OleDbConnection, OleDbDataAdapter и OleDbCommand.

System.Data.SqlClient. Здесь определен провайдер данных для СУБД SQL Server версии 7.0 и выше. Содержатся классы SqlConnection, SqlTransaction, SqlCommand и другие.

В System.Data.SqlTypes находятся классы, представляющие типы данных СУБД SQL Server.

1. Вначале создается соединение с базой данных – класс Connection, который обеспечивается необходимой информацией – строкой соединения.
2. Создается объект Command и задается команда, которую необходимо выполнить в данной СУБД. Эта команда может быть запросом SQL или исполняемой процедурой. Нужно задать параметры этой команды, если они имеются.
3. Если команда не возвращает данных, она просто выполняется с помощью одного из методов Execute. Например, это может быть удаление или обновление данных таблицы.
4. Если команда возвращает выборку данных, их необходимо куда-то поместить. Решите, нужно ли вам получить данные для последующего использования без связи с базой данных или же нужно просто быстро выполнить команду. В первом случае нужно создать класс DataAdapter и с его помощью сохранить данные в DataSet или в DataTable. Во втором случае создается класс DataReader, который требует сохранять соединение на все время работы, хранит выборку только для чтения и позволяет двигаться только вперед. Зато чтение с помощью DataReader выполняется в несколько раз быстрее, чем в DataAdapter.
5. Задать полученный DataSet или DataReader как источник данных элемента управления или вывести их на страницу другим способом.

Объект Connection для соединения с базой данных нуждается в строке соединения для указания пути к СУБД и входа в систему. Свойства класса Connection показаны в таблице. OleDbConnection, SqlConnection, OdbcConnection – наследники класса Connection, специфические для провайдеров OleDb, MS SQL ODBC соответственно.
Свойство Описание
DataSource Путь к базе данных в файловой системе при использовании Oledb, имя экземпляра базы сервера при использовании SqlConnection
Database Возвращает имя базы данных, используемой в объекте Connection после открытия
State Возвращает текущее состояние соединения. Возможные значения – Broken, Closed, Connecting, Executing, Fetching и Open.
ConnectionString Строка соединения с СУБД

Все свойства, кроме ConnectionString, только для чтения.
Использование объекта Command

Объект Command исполняет запрос SQL, который может быть в форме встроенного текста, процедуры сервера или прямого доступа к таблице. Если это запрос на выборку данных SELECT, то данные обычно помещаются в DataSet или в DataReader. Методы и свойства определены в абстрактном классе DbCommand(через интерфейс IDbCommand), и их реализуют частные ненаследуемые классы OleDbCommand, SqlCommand, OdbcCommand.

Свойство CommandType может принимать значения из перечисления CommandType. По умолчанию это Text, то есть выполняется непосредственно текст команды SQL, который записан в свойстве Command. TableDirect означает, что в результате выполнения команды будет возвращено все содержание таблицы. StoredProcedure означает, что в Command находится имя процедуры сервера, которая и будет выполняться.

Свойство CommandText хранит текст запроса SQL или имя серверной процедуры.

CommandTimeout задает время ожидания ответа, по умолчанию равное 30 секунд. Если команда не выполнится в течение этого времени, будет выброшено исключение.

Процедуры сервера нуждаются в параметрах. Они хранятся в коллекции Parameters и имеют тип SqlParameter. Текстовые команды также могут получать параметры, перед которыми ставится префикс @. Например:

Часто используется метод ExecuteNonQuery. С помощью него можно выполнить любую операцию с базами данных, которая не связана с запросом и получением данных, как то обновление, удаление записей, создание и изменение таблиц, создание процедур сервера. Она возвращает количество измененных записей в том случае, если выполняются команды Select, Update, Delete.

ExecuteScalar возвращает результат запроса в случае, если это одно-единственное значение. Например, нужно узнать количество заказов конкретного покупателя. Запрос выполняется с помощью команды “Select count * where customerid=1”. Ее результат – выборка из одной строки и одного столбца. Ее можно выполнить и с помощью метода ExecuteReader, но ExecuteScalar будет выполняться быстрее. Если запрос возвратит большее количество строк или столбцов, они будут проигнорированы.

ExecuteRow возвращает единственную запись.

ExecuteReader выполняется, если нужно получить табличные данные. Результат выполнения – курсор, в котором можно двигаться только от начала до конца.

В результате выполнения метода ExecuteReader объекта Command создается объект DataReader. Всегда закрывайте соединения после использования, иначе оно останется активным и будет занимать ресурсы. Это можно сделать двумя способами. Первый – вызвать перегруженный метод ExecuteReader, который принимает параметр типа CommandBehavior со значением CommandBehavior.CloseConnection. В таком случае необходимо перелистать полученную выборку от начала до конца, и соединение закроется, когда будет достигнут конец. Если вы не хотите прочитать все данные, можете самостоятельно закрыть соединение методом Close.

Развитые СУБД (теперь и MS Access) поддерживают транзакции. Транзакция – это последовательность команд, которая выполняется как одно целое. Например, при переводе денег сумма вычитается с одного счета и добавляется к другому. Если произойдет только одна из этих операций, банк или его клиенты понесут потери. поэтому важно, чтобы произошли обе операции или бы ни одна не произошла. Если на одном из этапов транзакции произошла ошибка, происходит откат(Rollback), то есть отменяются все ранее сделанные операции и база возвращается к состоянию до начала транзакции. Если все успешно, транзакция подтверждается операцией Commit.

Для поддержки транзакций введен класс SqlTransaction и ему подобные. У объекта Command есть свойство Transaction. Метод BeginTransaction объекта Connection заставляет базу данных перейти в режим транзакции.

Кроме того, необходимо всегда заключать программный код, работающий с базами данных, в блоки try/catch, так как работа часто происходит с удаленными серверами, и могут происходить самые разные ошибки как в сети. так и при работе самого сервера.

При этом выбрасывается исключение SqlException или OleDbException.

DbDataAdapter является родительским классом для SqlDataAdapter, OleDbDataAdapter, OdbcDataAdapter. Этот класс содержит 4 объекта типа Command. Классы DataAdapter обеспечивают двусторонний обмен информацией.

* SelectCommand – эта команда используется для выборки данных из базы. При этом класс DataTable заполняется данными.
* UpdateCommand – обновляет данные(редактирование записей).
* InsertCommand – добавление новых записей
* InsertCommand – команда для удаления записей

Метод Fill класса DbDataAdapter заполняет объекты DataSet или DataTable данными, прочитанными в результате выполнения команды SelectCommand. Эта команда должна быть запросом SQL типа Select. Если таблицы уже существуют, в него добавляются новые таблицы. Вообще метод Fill перегружен 8 раз. Например, DbDataAdapter.Fill Method (DataSet, String) добавляет в DataSet таблицу с именем, указанным во втором параметре. Если такая таблица уже есть, она обновляется. Доступ к таблице можно получить с помощью его имени индексатором.

Метод DbDataAdapter.Update записывает в базу данных все изменения, которые произошли в связанном с ним объекте DataSet.
DataSet

DataSet – это класс, содержащий в себе одну или несколько таблиц DataTable и связи между ними. Класс DataSet – это представление в памяти информации, считанной через ADO из баз данных или XML. Он позволяет манипулировать данными после отключения от источника данных.

Коллекция таблиц хранится в свойстве Tables, а отношений – в свойстве Relations.

Основываясь на таблицах датасета, можно создавать представления – DataView.

Напишем страницу, в которой будут использоваться представленные классы.

База Northwind входит в комплект SDK. Ее можно установить на сервере, запустив командную строку SQLExpress.

Окно внешних источников данных.


Соединение можно установить как с MS SQL, так и с файлом Access и любым источником ODBC, а также Oracle. Можно также создать новую базу данных MS SQL.


Когда соединение создано, вы через пользовательский интерфейс можете добавлять таблицы, просматривать их содержание, писать процедуры сервера и многое другое.

В лекции 3 мы создали страницы с голосованиями, но никак не обрабатывали результаты. Сейчас мы будем сохранять результаты голосования.

1. В начале надо создать базу данных. В окне Server Exlorer нажмите правой клавишей мыши на пункт Data Connections, в контекстном меню выберите Create New Sql Database.


.SQLExpress равносильно (local) SQLExpress и означает сервер на локальной машине. Можно подключиться к серверу и по сети. Мы создали базу данных Polls, которая находится на сервере. Можно создать базу данных в отдельном файле .mdf, тогда ее можно будет переносить на другой компьютер.

2. Создание таблицы. Это можно сделать и программно, и через окно Server Exlorer. Там уже появился узел созданной базы Polls.dbo. Раскройте его, правой клавишей мыши кликните на пункт Tables, в контекстном меню выберите Add New Table. Заполните следующие значения.
Column Name Data Type Allow Nulls
id int +
variant nvarchar(100)
voices int

Поле id создается как уникальный идентификатор варианта, и оно должно быть первичным ключом таблицы. Кликните мышью на первой строке и выберите пункт Set Primary Key. Поле voices(количество голосов) при создании должно быть равно 0. В Columns Properties найдите строчку Default Value or Binding и впишите значение 0.

Создание той же самой таблицы в программном режиме:

3. Заполнение таблицы вариантами. Кликните мышью на таблице и выберите пункт Show Table Data. Значения id не должны повторяться.


4. Создание серверной процедуры. При каждом голосовании значение поля voices одной из записей таблицы, соответствующей нужному пункту, должно возрастать. Это удобнее сделать с помощью процедуры, которая принимает аргумент id и обновляет нужное поле. Кликните мышью на узел Stored Procedures и выберите пункт Add New Stored Procedure.

В этой процедуре заключены 2 взаимосвязанных команды, связанных общей логикой, а для выполнения ее понадобится только один объект Command. Также заметьте, что для ее вызова не нужно знать внутреннее устройство таблицы. Перед переменными процедуры и параметрами ставится @, чтобы отличить их от полей таблицы.

Оператор SELECT извлекает записи из таблицы poll, которые соответствуют условию после ключевого слова WHERE. Так как id – ключевое(уникальное) поле и выбирается одно поле voices, возвращается одно значение, которое можно записать в переменную. Затем в операторе UPDATE изменяется на увеличенное значение переменной @Count.

5. Привязка к данным. На новой странице создайте элементы Button и RadioButtonList(можно и CheckBoxList) перетаскиванием из Toolbox. На RadioButtonList имеется стрелка, открывающая Smart Tag. С помощью него можно сконфигурировать соединение с нужной таблицей или внести значения вручную. При нажатии на Configure Data Source появится мастер соединений. Выберите New Data Source. На втором шаге мастер предложит выбрать тип источника. Выберите Database. На следующем шаге из выпадающего списка выберите .sqlexpress.Polls.dbo. На четвертом шаге мастер предложит сохранить строку соединения в конфигурационном файле. Сохраним, она может понадобиться. Для заполнения переключателей необходимы 2 поля – в variant содержится текст варианта, который будет виден в форме, а id – номер варианта, который связан с DataValueField списка переключателей, и будет передаваться в процедуру сервера как параметр.


При желании на этом шаге можно отсортировать значения, например, по алфавитному порядку текстов нажатием на кнопку ORDER BY. На предпоследнем шаге можно протестировать полученный запрос, если все в порядке, то на последнем шаге ставим variant как источник для показа и id для значений. На странице должно получиться примерно следующее:

6. Обработка результатов. Процедуру необходимо вызвать с параметром, взятым из свойства Value группы переключателей. Свойство Parameters SqlCommand является коллекцией, в данном случае в нее надо добавить один элемент.

При работе с базами данных важно соблюдать принцип: «занимай ресурсы как можно позже и освобождай как можно раньше». Поэтому соединение закрывается сразу после выполнения процедуры сервера.
Заключение

Здравствуйте. Настроил подключение к бд через DataSource.

вывод программы

Но какую бы базу я не указал все время подключаюсь к базе тест:

Если использовать драйверМенеджер, то все работает. Подскажите что нужно сделать что-бы подключится к другой бд.

Имя ресурса правильное указать в @Resource. На странице конфигурации подключения перейдите в Attributes, найдите и запомните атрибут JNDI. Запомнили? Теперь напишите то что запомнили в . @Resource(name="сюда") Sergey, на странице Attributes, в строке JNDI у меня написано: java:/MySqlDS. Если я это подставлю в аннотацию ( @Resource(name = "java:/MySqlDS")), то получу множество исключений. Подскажите пожалуйста, что я делаю не так. Ошибки можно посмотреть здесь - dim.st/t0a2e.txt К самому серверу mysql я подключаюсь и могу с ним работать. Вот только ограничен только базой, которая создана по умолчанию - test. Хотя в url указана база - Frewor А так @Resource(lookup="java:/MySqlDS")? lookup точно должен искать заданный JNDI. А name какой-то мутный атрибут.

@Resource используется для инъекции ресурсов и для маппинга ресурсов.
Только нет единого мнения нужно ли делать и то и другое или только что-то одно в зависимости от обстоятельств применения этой аннотации.

Похоже wildfly делает и то и другое. Т.е. связывает указанный name с указанным lookup и потом внедряет в поле то, что получилось в результате lookup-а.

Если не указывать name или lookup, то для этих параметров используются значения по-умолчанию.

@Resource(name = "MySqlDS") =
@Resource(name = "MySqlDS", lookup="java:comp/DefaultDataSource")
Имя MySqlDS отображается в java:comp/DefaultDataSource и в поле внедряется java:comp/DefaultDataSource . Если не ошибаюсь в wildfly это ExampleDS. Вы не меняли ExampleDS в настройке сервера, чтобы он подключался к Вашей базе test? Или меняли параметр default datasource?

Пробуем написать @Resource(name = "java:/MySqlDS") .
Получится @Resource(name = "java:/MySqlDS", lookup="java:comp/DefaultDataSource")
Но java:/MySqlDS уже задействовано в конфигурации сервера, и указывает на что-то отличное от java:comp/DefaultDataSource . Отсюда и исключения.

Теперь напишем @Resource(lookup = "java:/MySqlDS") . name по умолчанию как-то вычисляется по имени поля. Но нам этот name не так уж и нужен, главное что теперь-то точно будет внедряться нужная база.

В следующем коде иллюстрируется создание, открытие и закрытие соединения с базой данных SqlServer:

Из приведенного выше кода можно понять, что имя Initial Catalog относится к базе данных, с которой нужно установить сеанс. Имя Data Source определяет имя машины, на которой расположена база данных. Элемент (local) позволяет указать текущую локальную машину (независимо от конкретного имени этой машины), а элемент \SQLEXPRESS сообщает поставщику SQL Server, что вы подключаетесь к стандартной инсталляции SQL Server Express (если вы создали AutoLot с помощью полной версии SQL Server 2005 или более ранней, укажите Data Source=(local)). В данном примере я использовал вместо (local) полное название имени компьютера (MICROSOF-1EA29E), на котором развернута версия SQL Server.

Кроме того, можно указать любое количество элементов, которые задают полномочия безопасности. В нашем примере имени Integrated Security присвоено значение SSPI (что эквивалентно true), которое использует для аутентификации пользователя текущие полномочия учетной записи Windows.

Назначение каждой пары имя/значение для вашей СУБД можно узнать в документации по NET Framework 4.0 SDK, в описании свойства ConnectionString объекта подключения для вашего поставщика данных.

При наличии строки подключения вызов Open() устанавливает соединение с СУБД. В дополнение к членам ConnectionString, Open() и Close() объект подключения содержит ряд членов, которые позволяют настроить дополнительные параметры подключения, например, время тайм-аута и информацию, относящуюся к транзакциям.

Ниже приведены некоторые члены базового класса DbConnection:

BeginTransaction()

Используется для начала транзакции базы данных

ChangeDatabase()

Изменяет базу данных для открытого подключения

ConnectionTimeout

Database

Свойство только для чтения. Содержит имя базы данных, с которой связан объект подключения

DataSource

Свойство только для чтения. Содержит местоположение базы данных, с которой связан объект подключения

GetSchema()

Этот метод возвращает объект DataTable, содержащий информацию схемы из источника данных

State

Свойство только для чтения. Содержит текущее состояние подключения в виде одного из значений перечисления ConnectionState

Свойства типа DbConnection предназначены в основном только для чтения и поэтому нужны, если требуется получить характеристики подключения во время выполнения. Если понадобится изменить стандартные значения, необходимо будет изменить саму строку подключения. Например, можно изменить время тайм-аута с 15 на 30 секунд:

В этом варианте создается экземпляр SqlConnectionStringBuilder, устанавливаются его свойства, и выбирается внутренняя строка из свойства ConnectionString. Здесь использован стандартный конструктор типа. При этом можно также создать экземпляр объекта построителя для строки подключения поставщика данных, передав в качестве отправной точки существующую строку подключения (это может оказаться удобным при динамическом чтении значений из файла App.config).

Эффективное использование соединений

Это также касается и написания кода, обращающегося к базе данных, потому что сохранение подключений открытыми дольше, чем нужно, может повлиять на другие сеансы.

В крайних случаях незакрытое соединение может полностью блокировать доступ других пользователей к целым множествам таблиц, нанося огромный ущерб производительности приложения. Закрытие соединений базы данных должно считаться обязательным, поэтому в настоящем разделе мы продемонстрируем структуру кода, которая минимизирует риск оставления ресурсов в открытом состоянии.

Вариант обеспечения очистки ресурсов состоит в применении блоков try. catch. finally, и он гарантирует закрытие любых открытых соединений внутри блока finally. Рассмотрим краткий пример:

Выполнение

1. Создание приложения типа Windows Forms Application .

2. Вызов мастера подключения.

Visual Studio команда "Add New Data Source. "

Рисунок. 1. Вызов мастера подключения к файлу базы данных

3. Выбор типа источника данных.

В результате откроется окно мастера для подключения к источнику данных которое изображено на рис. 2.

MS Visual Studio типа подключения

Рисунок. 2. Выбор типа подключения из которого приложение будет получать данные

В окне необходимо выбрать один из четырех возможных вариантов подключения к источнику данных. В MS Visual Studio существует четыре типа подключения к источникам данных:

  • Database – подключение к базе данных и выбор объектов базы данных;
  • Service – открывает диалоговое окно Add Service Reference позволяющее создать соединение с сервисом, который возвращает данные для вашей программы;
  • Object – позволяет выбрать объекты нашего приложения, которые в дальнейшем могут быть использованы для создания элементов управления ( controls ) с привязкой к данным;
  • Share Point – позволяет подключиться к сайту SharePoint и выбрать объекты для вашей программы.

В нашем случае выбираем элемент Database и продолжаем нажатием на кнопке Next .

4. Выбор модели подключения к базе данных.

Следующий шаг – выбор модели подключения к базе данных (рис. 3).

Visual Studio выбор модели подключения к базе данных

Рис. 3. Выбор модели подключения к базе данных

Система предлагает выбор одного из двух вариантов:

  • модели данных на основе набора данных ( Dataset );
  • модели данных Entity , что означает, что система может сгенерировать модель данных из базы данных которой могут выступать сервера баз данных Microsoft SQL Server , Microsoftt SQL Server Compact 3.5 или Microsoft SQL Server Database File , либо создать пустую модель как отправную точку для визуального проектирования концептуальной модели с помощью панели инструментов.

В нашем случае выбираем тип модели данных DataSet .

5. Задание соединения с БД.

Следующим шагом мастера (рис. 4) есть выбор соединения данных которое должно использоваться приложением для соединения с базой данных.

Visual Studio выбор соединения с базой данных

Рис. 4. Выбор соединения с базой данных

Visual Studio добавление нового соединения база данных

Рис. 5. Добавление нового соединения и выбор файла базы данных

Visual Studio смена источника данных

Рис. 6. Смена источника данных

В окне на рисунке 6 системой Microsoft Visual Studio будет предложено следующие виды источников данных:

  • Microsoft Access Database File – база данных Microsoft Access ;
  • Microsoft ODBC Data Source – доступ к базе данных с помощью программного интерфейса ODBC ( Open Database Connectivity );
  • Microsoft SQL Server ;
  • Microsoft SQL Server Compact 3.5 ;
  • Microsoft SQL Server Database File ;
  • Oracle Database – база данных Oracle .

Visual Studio окно "Add Connection"

Visual Studio строка Connection string

Рис. 8. Строка Connection string

В этом каталоге размещаются все основные исходные модули проекта, например Program.cs (модуль, содержащий основную функцию WinMain() ) , Form1.cs (содержит исходный код обработки главной формы приложения) и другие.

Visual Studio добавление файл база данных

Рисунок 9. Окно добавления файла базы данных в проект

6. Формирование конфигурационного файла приложения.

Visual Studio запись строки подключения к базе данных в конфигурационный файл

Рисунок 10. Предложение записи строки подключения к базе данных в конфигурационный файл приложения

Ничего не изменяем, оставляем все как есть (кликаем на Next ).

7. Выбор объектов базы данных для использования в программе

Последнее окно мастера (рисунок 11) предлагает выбрать список объектов (таблиц, запросов, макросов, форм и т.д.), которые будут использоваться в наборе данных. Как правило выбираем все таблицы базы данных. В нашем примере база данных содержит всего одну таблицу с именем Tovar .

Visual Studio выбор объектов базы данных

Рисунок 11. Выбор объектов базы данных, которые будут использоваться в данном наборе данных

8. Что же изменилось в программе после выполнения мастера?

Если выбрать панель Data Source (рисунок 12), то можно увидеть, как подключен набор данных с именем db1Dataset в котором есть таблица с именем Tovar .

Visual Studio окно DataSources подключение база данных

Рисунок 12. Окно DataSources содержит подключение к базе данных

Visual Studio окно приложения панель Server Explorer

Рис. 13. Окно приложения с изменениями в панели Server Explorer

9. Подключение методов оперирования базой данных.

Для того, чтобы использовать методы, которые будут работать с базой данных MS Access (и не только MS Access ), необходимо подключить пространство имен System.Data.OleDb .

Для этого в основной форме ( Form1.cs ) в Solution Explorer выбираем режим просмотра кода (View Code) из контекстного меню (рис. 14) и вначале файла добавляем следующую строку:

Visual Studio команда View Code

Рисунок 14. Вызов программного кода главной формы приложения ( Form1.cs ) с помощью Solution Explorer

Общий вид верхней части файла Form1.cs будет следующим:

На этом этапе подключение к базе данных db1.mdb выполнено. Дальнейшими шагами есть создание программного кода для оперирования данными в базе данных.

Читайте также: