-
Explicación detallada de C# DataSet y DataTable
2009-jueves-21
1. Cree un objeto Conjunto de datos:
Conjunto de datos ds = nuevo Conjunto de datos ("Nombre del conjunto de datos");
2. Ver la estructura creada llamando a SqlDataAdapter.Fill
da.Fill(ds,"Pedidos");
DataTable tbl = ds.Table[cero];
foreach(Columna de datos col en tbl.Columnas)
Console.WriteLine(col.ColumnName);
3. Ver los datos devueltos por SqlDataAdapter ①, objeto DataRow
DataTable tbl = ds.Table[cero];
fila DataRow = tbl.Row[cero];
Console.WriteLine(ros["IDPedido"]);
② Verifique los datos almacenados en DataRow.
DataTable tbl = fila.Tabla;
foreach(Columna de datos col en tbl.Columnas)
Console.WriteLine(fila[col]);
③ Verifique el objeto DataRow en DatTable.
foreach (fila DataRow en tbl.Rows)
MostrarFila(fila);
4. Verifique los datos en el DataSet ① Verifique las propiedades de DataColumn: ReadOnly, AllowDBNull, MaxLength, Unique
② Restringe la agregación de objetos DataTable: UiqueConstraints, Primarykey, ForeignkeyConstraints.
Normalmente no hay necesidad de molestarse en crear ForeignkeyConstraints, porque se crea una cuando se crea una relación entre dos objetos DataTable en un DataSet.
③ Utilice el método SqlDataAdapter.Fill para recuperar información del método.
5. Compile código para crear objetos DataTable
① Cree un objeto DataTable: DataTable tbl = new DataTable("TableName");
② Agregue DataTable a la convergencia de tabla del objeto DataSet.
Conjunto de datos ds = nuevo Conjunto de datos();
DataTable tbl = new DataTable("Clientes");
ds.Tables.Add(tbl);
Conjunto de datos ds = nuevo Conjunto de datos();
DataTable tbl = ds.Tables.Add("Clientes");
Los objetos DataTable solo pueden existir en como máximo un objeto DataSet. Si desea agregar una tabla de datos a varios conjuntos de datos, debe utilizar el paso Copiar o el paso Clonar. El paso Copiar crea una nueva DataTable que tiene la misma estructura que la DataTable original y contiene filas similares; el paso Clonar crea una nueva DataTable que tiene la misma estructura que la DataTable original pero no contiene ninguna fila.
③ Agregar columnas a DataTable
DataTable tbl = ds.Tables.Add("Pedidos");
Columna de datos col =tbl.Columns.Add("ID de pedido", tipo de (int));
col.AllowDBNull = falso;
col.MaxLength = cinco;
col.Único = verdadero;
tbl.PrimaryKey = new DataColumn[]{tbl.Columns["CustomersID"]};
Cuando se debe establecer una clave principal, AllowDBNull se establece automáticamente en False;
④ Deseche las columnas de incremento automático.
Conjunto de datos ds = nuevo Conjunto de datos();
DataTable tbl = ds.Tables.Add("Pedidos");
DataColumn col = tbl.Columns.Add("OrderID",typeof(int));
col.AutoIncrement = verdadero;
col.AutoIncrementSeed = -1;
col.AutoIncrementStep = -1;
col.ReadOnly = verdadero;
⑤ Agregar columnas basadas en expresiones.
tbl.Columns.Add("ItemTotal",typeof(Decimal),"Cantidad*PrecioUnitario");
6. Modifique el contenido de DataTable ①, agregue un nuevo DataRow
DataRow fila = ds.Tables["Clientes"].NewRow();
fila["ID de cliente"] = "ALFKI";
ds.Tables["Clientes"].Rows.Add(fila);
objeto[] aValues ={"ALFKI","Alfreds","Anders","030-22222"};
da.Tables["Clientes"].LoadDataRow(aValues,false);
② La corrección está actualmente en curso.
Modificar el contenido de una fila no modifica automáticamente el contenido correspondiente en la base de datos. Las modificaciones a la fila se consideran cambios pendientes que luego se entregarán a la base de datos mediante el objeto SqlDataAdapter.
Fila de datos filaCliente;
filaCliente = ds.Tables["Clientes"].Rows.Find("ANTON");
if(filaCliente == nulo)
//No busco clientes
demás
{
filaCliente["NombreEmpresa"] = "NuevoNombreEmpresa";
filaCliente["NombreContacto"] = "NuevoNombreContacto";
}
//Recomendado utilizar este formulario
Fila de datos filaCliente;
filaCliente = ds.Tables["Clientes"].Rows.Find("ANTON");
if(filaCliente == nulo)
//No busco clientes
demás
{
filaCliente.BeginEdit();
filaCliente["NombreEmpresa"] = "NuevoNombreEmpresa";
filaCliente["NombreContacto"] = "NuevoNombreContacto";
filaCliente.EndEdit();
}
//null significa no modificar los datos de esta columna
obejct[] aCliente ={null, "NuevoNombreEmpresa", "NuevoNombreContacto", nulo}
Fila de datos filaCliente;
filaCliente = ds.Tables["Clientes"].Rows.Find("ALFKI");
filaCliente.ItemArray = unCliente;
③ Manejar el valor nulo de DataRow.
//Comprueba si está vacío
Fila de datos filaCliente;
filaCliente = ds.Tables["Clientes"].Rows.Find("ALFKI");
if(filaCliente.IsNull("Teléfono"))
Console.WriteLine("Es nulo");
demás
Console.WriteLine("No es nulo");
//Otorgar valor nulo
filaCliente["Teléfono"] = DBNull.Value;
④ Eliminar fila de datos
Fila de datos filaCliente;
filaCliente = ds.Tables["Clientes"].Rows.Find("ALFKI");
filaCliente.Delete();
⑤. Eliminar fila de datos
DataRow filaCliente = ds.Tables["Clientes"].Rows.Find("ALFKI");
filaCliente.ItemArray = unCliente;
da.Tables["Clientes"].Remove(rowCliente);
tal vez
ds.Tables["Clientes"].RemoveAt(intIndex);
⑥ Utilice las propiedades DataRow.RowState: Sin cambios, Separado, Agregado, Modificado, Eliminado.
vacío privado DemostrarRowState()
{ // Ejecute una función para crear una DataTable con una columna DataTable myTable = MakeTable();
// Crea una nueva DataRow. myRow = myTable.NewRow(); // Fila separada. Console.WriteLine("Nueva fila " + myRow.RowState);
myTable.Rows.Add(myRow); // Nueva fila. Console.WriteLine("AddRow " + myRow.RowState);
myTable.AcceptChanges(); // Fila sin cambios. Console.WriteLine("AcceptChanges " + myRow.RowState);
myRow["FirstName"] = "Scott"; // Fila modificada. Console.WriteLine("Modified " + myRow.RowState);
myRow.Delete(); // Fila eliminada. Console.WriteLine("Eliminada" + myRow.RowState);
⑦ Verifique los cambios pendientes en DataRow.
Fila de datos filaCliente;
filaCliente = ds.Tables["Clientes"].Rows.Find("ALFKI");
filaCliente["NombreEmpresa"] = "NuevoNombreEmpresa";
cadena strNewCompanyName, strOldCompanyName;
Console.WriteLine(rowCustomer["CompanyName", DataRowVersion.Current]);
Console.WriteLine(rowCustomer["CompanyName", DataRowVersion.Original]);
1. Conjunto de datos
①、Atributos
CaseSensitive: se utiliza para controlar si las comparaciones de cadenas en DataTable distinguen entre mayúsculas y minúsculas.
ARRIBA
Fuente de este artículo:
Mi red anormal
JavaExcepción
Excepción Dotnet
Oráculo