-
Подробное объяснение C# DataSet и DataTable.
2009-Четверг-21
1. Создайте объект DataSet:
DataSet ds = новый DataSet("DataSetName");
2. Просмотрите структуру, созданную с помощью вызова SqlDataAdapter.Fill.
da.Fill(ds,"Заказы");
DataTable tbl = ds.Table[ноль];
foreach (столбец DataColumn в таблице tbl.Columns)
Console.WriteLine(col.ColumnName);
3. Просмотр данных, возвращаемых SqlDataAdapter ①, объектом DataRow.
DataTable tbl = ds.Table[ноль];
Строка DataRow = tbl.Row[ноль];
Console.WriteLine(ros["OrderID"]);
② Проверьте данные, хранящиеся в DataRow.
DataTable tbl = row.Table;
foreach (столбец DataColumn в таблице tbl.Columns)
Console.WriteLine(строка[столбец]);
③ Проверьте объект DataRow в DatTable.
foreach (строка DataRow в таблице tbl.Rows)
DisplayRow (строка);
4. Проверьте данные в наборе данных. ① Проверьте свойства DataColumn: ReadOnly, AllowDBNull, MaxLength, Unique.
② Ограничивает агрегацию объектов DataTable: UiqueConstraints, Primarykey, ForeignkeyConstraints.
Обычно нет необходимости создавать ограничения ForeignkeyConstraints, поскольку они создаются при создании связи между двумя объектами DataTable в DataSet.
③ Используйте метод SqlDataAdapter.Fill для получения информации о методе.
5. Скомпилируйте код для создания объектов DataTable.
① Создайте объект DataTable: DataTable tbl = new DataTable("TableName");
② Добавьте DataTable в таблицу сходимости объекта DataSet.
DataSet ds = новый DataSet();
DataTable tbl = новый DataTable("Клиенты");
ds.Tables.Add(таблица);
DataSet ds = новый DataSet();
DataTable tbl = ds.Tables.Add("Клиенты");
Объекты DataTable могут существовать не более чем в одном объекте DataSet. Если вы хотите добавить DataTable в несколько наборов данных, вам необходимо использовать шаг копирования или шаг клонирования. Шаг копирования создает новый DataTable, который имеет ту же структуру, что и исходный DataTable, и содержит аналогичные строки; шаг клонирования создает новый DataTable, который имеет ту же структуру, что и исходный DataTable, но не содержит строк;
③ Добавьте столбцы в DataTable.
DataTable tbl = ds.Tables.Add("Заказы");
DataColumn col =tbl.Columns.Add("OrderID",typeof(int));
col.AllowDBNull = ложь;
col.MaxLength = пять;
col.Unique = правда;
tbl.PrimaryKey = новый DataColumn[]{tbl.Columns["CustomersID"]};
Если необходимо задать первичный ключ, для параметра AllowDBNull автоматически устанавливается значение False;
④ Удалить колонки с автоматическим приращением.
DataSet ds = новый DataSet();
DataTable tbl = ds.Tables.Add("Заказы");
DataColumn col = tbl.Columns.Add("OrderID",typeof(int));
col.AutoIncrement = правда;
col.AutoIncrementSeed = -1;
col.AutoIncrementStep = -1;
col.ReadOnly = правда;
⑤ Добавьте столбцы на основе выражений.
tbl.Columns.Add("ItemTotal",typeof(Decimal),"Quantity*UnitPrice");
6. Измените содержимое DataTable ①, добавьте новую строку данных.
DataRow row = ds.Tables["Клиенты"].NewRow();
row["CustomerID"] = "АЛФКИ";
ds.Tables["Клиенты"].Rows.Add(строка);
object[] aValues = {"АЛФКИ","Альфредс","Андерс","030-22222"};
da.Tables["Клиенты"].LoadDataRow(aValues,false);
② В настоящее время выполняется исправление.
Изменение содержимого строки не приводит к автоматическому изменению соответствующего содержимого в базе данных. Изменения в строке считаются ожидающими изменениями, которые позже будут доставлены в базу данных с помощью объекта SqlDataAdapter.
DataRow rowCustomer;
rowCustomer = ds.Tables["Custoemrs"].Rows.Find("ANTON");
если (rowCustomer == ноль)
//Не ищем клиентов
еще
{
rowCustomer["CompanyName"] = "НовоеCompanyName";
rowCustomer["ИмяКонтакта"] = "НовоеИмяКонтакта";
}
//Рекомендуется использовать эту форму
DataRow rowCustomer;
rowCustomer = ds.Tables["Custoemrs"].Rows.Find("ANTON");
если (rowCustomer == ноль)
//Не ищем клиентов
еще
{
rowCustomer.BeginEdit();
rowCustomer["CompanyName"] = "НовоеCompanyName";
rowCustomer["ИмяКонтакта"] = "НовоеИмяКонтакта";
rowCustomer.EndEdit();
}
//null означает не изменять данные в этом столбце
obejct[] aCustomer ={null, "NewCompanyName", "NewContactName", null}
DataRow rowCustomer;
rowCustomer = ds.Tables["Клиенты"].Rows.Find("ALFKI");
rowCustomer.ItemArray = Клиент;
③ Обработка нулевого значения DataRow.
//Проверяем, пусто ли оно
DataRow rowCustomer;
rowCustomer = ds.Tables["Клиенты"].Rows.Find("ALFKI");
если(rowCustomer.IsNull("Телефон"))
Console.WriteLine("Это значение NULL");
еще
Console.WriteLine("Это не Null");
//Предоставляем нулевое значение
rowCustomer["Телефон"] = DBNull.Value;
④ Удалить строку данных.
DataRow rowCustomer;
rowCustomer = ds.Tables["Клиенты"].Rows.Find("ALFKI");
строкаКлиент.Удалить();
⑤ Удалить строку данных.
DataRow rowCustomer = ds.Tables["Клиенты"].Rows.Find("ALFKI");
rowCustomer.ItemArray = Клиент;
da.Tables["Клиенты"].Remove(rowCustomer);
возможно
ds.Tables["Клиенты"].RemoveAt(intIndex);
⑥ Используйте свойства DataRow.RowState: Без изменений, Отсоединено, Добавлено, Изменено, Удалено.
частная пустота DemonstrateRowState()
{ // Запускаем функцию для создания DataTable с одним столбцом. DataTable myTable = MakeTable();
// Создайте новую строку DataRow. myRow = myTable.NewRow(); // Отдельная строка. Console.WriteLine("New Row " + myRow.RowState);
myTable.Rows.Add(myRow); // Новая строка. Console.WriteLine("AddRow " + myRow.RowState);
myTable.AcceptChanges(); // Неизменная строка Console.WriteLine("AcceptChanges " + myRow.RowState);
myRow["FirstName"] = "Скотт"; // Измененная строка. Console.WriteLine("Modified " + myRow.RowState);
myRow.Delete(); // Удаленная строка. Console.WriteLine("Deleted " + myRow.RowState);
⑦ Проверьте ожидающие изменения в DataRow.
DataRow rowCustomer;
rowCustomer = ds.Tables["Клиенты"].Rows.Find("ALFKI");
rowCustomer["CompanyName"] = "НовоеCompanyName";
строка strNewCompanyName, strOldCompanyName;
Console.WriteLine(rowCustomer["CompanyName", DataRowVersion.Current]);
Console.WriteLine(rowCustomer["CompanyName", DataRowVersion.Original]);
1. Набор данных
①、Атрибуты
CaseSensitive: используется для управления учетом регистра при сравнении строк в DataTable.
ВЕРШИНА
Источник этой статьи:
Моя ненормальная сеть
JavaException
DotnetException
Оракул