Удовлетворить потребность в хранении и считывании табличных данных удобно с помощью технологии ADO.Net. Общий принцип заключается в том, что с помощью программных инструментов мы загружаем реальную базу данных (РБД) в виртуальную (ВБД), и работаем с ней, а затем, при необходимости, загружаем изменения в РБД.
Уточним, что данные в ВБД хранятся только во время исполнения программы. Рассмотрим на примере базы данных с именем myDataBase.mdb, в которой есть таблица student. Для работы на компьютере должен быть установлен драйвер ODBC. В панели управления («источники данных ODBC») необходимо настроить путь к источнику данных и дать ему имя (в нашем примере — dbsource).
Для обеспечения взаимодействия с базой данных необходимо подключить следующие библиотеки:
[php]
using System.Data;
using System.Data.Odbc;[/php]
Для соединения с базой данных необходимо определить следующие объекты:
[php]private OdbcConnection cn; // для открытия доступа
private OdbcDataAdapter da1; //для загрузки РБД в ВБД
private OdbcCommandBuilder cmdb1; //для сохранения изменений в РБД
private DataSet ds; // для соединения
private DataTable dt; //объявление таблицы (ВБД)[/php]
Открываем соединение:
[php]
ds = new DataSet();
cn = new OdbcConnection("Dsn=dbsource"); //источник данных
cn.Open();[/php]
Теперь формируем адаптеры, чтобы скопировать РБД в ВБД. С помощью SQL запроса отбираем все данные из таблицы student:
[php]da1 = new OdbcDataAdapter("select * from student", cn);
cmdb1 = new OdbcCommandBuilder(da1);//создаем объект для последующей записи изменений
da1.Fill(ds, "tests"); // «заливаем» данные в адаптер
Теперь окончательно записываем скопированные данные в виртуальную таблицу с именем dt:
dt = ds.Tables[0];[/php]
Здесь «ноль» — это порядковый номер таблицы в нашей ВБД; нумерация начинается с нуля.
Теперь можем пользоваться данными нужным образом. Например, загрузим фамилии студентов в поле со списком:
[php]foreach (DataRow dr in dt.Rows) //перебираем все строки (rows) таблицы
{ comboBox1.Items.Add(dr["fios"].ToString()); }[/php]
Здесь следует обратить внимание, что при обращении к данным мы используем названия столбцов реальной БД.
Теперь хотим добавить в таблицу новую фамилию, для чего мы ранее создали объект Command Builder:
[php]DataRow drs = dt.NewRow(); // создаем новую строку в таблице
drs["fios"] = «Иванов»; //задаем значение
dt.Rows.Add(drs); //подтверждаем добавление строки
da1.Update(ds, "student"); // обновляем – вносим изменения в ВБД[/php]