Столбцы и строки таблиц представляются классами DataColumn и DataRow соответственно:
Основные члены типа DataColumn:
AllowDBNull | Может ли данный столбец содержать NULL. По умолчанию true |
AutoIncrement AutoIncrementSeed AutoIncrementStep | Настройка автоинкремента для данного столбца. |
Caption | Заголовок, который должен отображаться для данного столбца. |
ColumnMapping | Представление DataColumn при сохранении DataSet в виде XML. Столбец может быть записан как XML-элемент, XML-атрибут, текст, либо пропущен |
ColumnName | Имя столбца из коллекции Columns (внутреннее представление в DataTable). Если не указать значение явно, то по умолчанию там находится слово "Column" с числовым суффиксом по (т.е. Column1, Column2, Column3,...) |
DataType | Тип данных столбца (логический, строковый, с плавающей точкой и т.д.) |
DefaultValue | Значение по умолчанию, заносимое в данный столбец при вставке новых строк |
Ordinal | Положение столбца в коллекции Columns, содержащейся в DataTable |
Readonly | Предназначен ли данный столбец только для чтения после добавления строки в таблицу. По умолчанию равно false |
Table | Получает объект DataTable, содержащий данный DataColumn |
Unique | Указывает, должны ли быть уникальными значения во всех строках данного столбца. Для первичного ключа Unique должно содержать значение true |
Основные члены типа DataRow:
HasErrors | Есть ли ошибки в строке |
GetColumnsInError() | Ошибочные столбцы |
GetColumnError() | Описание ошибки для столбца |
ClearErrors() | Удалить информацию об ошибках |
RowError | Текстовое описание ошибки для строки |
ItemArray | Все значения столбцов строки в виде массива объектов |
RowState | Текущее состояние DataRow в содержащем его DataTable (новый, измененный, не измененный или удаленный) |
Table | Ссылка на объект DataTable, содержащий данный объект DataRow |
AcceptChanges() | Фиксация всех изменений в данной строке |
RejectChanges() | Отмена всех изменений в данной строке |
BeginEdit() | Начинает операцию редактирования |
EndEdit() | Заканчивает операцию редактирования |
CancelEdit() | Отменяет операцию редактирования |
Delete() | Помечает строку для удаления при вызове AcceptChanges() |
IsNull() | Проверяет, содержит ли указанный столбец пустое значение |
Пример создания таблицы:
// создание столбцов:
DataColumn col1 = new DataColumn("IntField", typeof (int));
DataColumn col2 = new DataColumn("StrField", typeof (string));
// создание таблицы и добавление в нее столбцов:
DataTable table = new DataTable("TestTable");
table.Columns.Add(col1);
table.Columns.Add(col2);
// добавление строк в таблицу
DataRow row = table.NewRow();
row["IntField"] = 10;
row["StrField"] = "Hello!";
table.Rows.Add(row);
row = table.NewRow();
row["IntField"] = 20;
row["StrField"] = "Hello again!";
table.Rows.Add(row);
// создание DataSet и добавление в него таблицы
DataSet ds = new DataSet("TestDataBase");
ds.Tables.Add(table);
Работа с адаптерами данных:
Класс адаптеров данных применяется для заполнения наборов данных DataSet с помощью объектов DataTable; кроме того, они могут отправлять измененные DataTable назад в базу данных для обработки. В таблице перечислены основные члены базового класса DbDataAdapter, от которого порождаются все объекты адаптеров данных (например, SqlDataAdapter и OdbcDataAdapter).
Основные члены класса DbDataAdapter:
Fill() | Выполняет команду SQL SELECT (указанную в свойстве SelectCommand) для запроса к базе данных и загрузки этих данных в объект DataTable |
SelectCommand InsertCommand UpdateCommand DeleteCommand | Содержат SQL-команды, отправляемые в хранилище данных при вызовах методов Fill() и Update() |
Update() | Выполняет команды SQL INSERT, UPDATE и DELETE (указанных свойствами InsertCommand, UpdateCommand и DeleteCommand) для сохранения в базе данных изменений, выполненных в DataTable |
Пример:
string connectionString =
@"Data Source=(local)\SQLEXPRESS;Initial Catalog=DataBase1";
// Создание адаптера данных и установка команды для Fill()
SqlDataAdapter adapter =
new SqlDataAdapter("SELECT * FROM Table1", connectionString);
// Создание объекта DataSet
DataSet ds = new DataSet("DataBase1");
// Чтение из базы данных таблицы Table1 в объект DataSet
adapter.Fill(ds, "Table1");
// вывод всех столбцов таблицы Table1
DataTable dt = ds.Tables["Table1"];
for (int c = 0; c < dt.Columns.Count; c++)
Console.Write(dt.Columns[c].ColumnName + "\t");
Console.WriteLine();
// Вывод содержимого таблицы Table1.
for (int r = 0; r < dt.Rows.Count; r++)
{
for (int c = 0; c < dt.Columns.Count; c++)
Console.Write(dt.Rows[r][c].ToString() + "\t");
Console.WriteLine();
}