ASP.NET中DataTable的用法

引言:最近用到虚拟表 所以我就搜索了一些Datatable的常用用法

一、创建DataTable

DataTable Table = new DataTable("mytable");//创建一个名为mytable的DataTable对象
Table.CaseSensitive = false;//设置不区分大小写
Table.MinimumCapacity = 100;//设置DataTable初始大小
Table.TableName = "newtable"; //设置DataTable的名称

 

二、向DataTable中添加列

//DataColumn Colum = new DataColumn();//创建一个DataColumn
//Colum = Table.Columns.Add("id", typeof(int));//增加一个列
//Colum = Table.Columns.Add("title", typeof(string));//增加一个列

//表名.Columns.Add("列名",typeof(数据类型));
table.Columns.Add("UserName", typeof(System.String));//直接添加

//添加基于表达式的列
//table.Columns.Add("ItemTotal", typeof(Decimal), "Quantity*UnitPrice");

 

三、DataTable删除列

//表名.Columns.Remove("列名")
//删除列名
table.Columns.Remove("minArea");

 

四、DataTable修改列名

//表名.Columns["列名"].SetOrdinal(新序号)
//调整列位置及序号
table.Columns["num"].SetOrdinal(1);

//表名.Columns["旧列名"].ColumnName="新列名"
//修改列名
table.Columns["num"].ColumnName = "nums";

 

五、设置DataTable的主键列

//设置主键为UserId
//表名.PrimaryKey = new DataColumn[] { 表名.Columns["列名"] };
table.PrimaryKey = new DataColumn[] { table.Columns["UserId"] };

 

六、DataTable设置列的唯一约束

//表名.Constraints.Add("约束名",表名.Columns["列名"],true)
//创建唯一约束
table.Constraints.Add("PK_UserId",table.Columns["UserId"],true);

 

七、DataTable设置自增列

//处理自动增长列
//先创建或获取列
DataColumn col = tbl.Columns.Add("OrderID", typeof(int));

col.AutoIncrement = true; //获取或设置一个值,该值指示对于添加到该表中的新行,列是否将列的值自动递增

col.AutoIncrementSeed = -1; //获取或设置其 System.Data.DataColumn.AutoIncrement 属性设置为 true 的列的起始值

col.AutoIncrementStep = -1; //获取或设置其 System.Data.DataColumn.AutoIncrement 属性设置为 true 的列使用的增量

col.ReadOnly = true; //获取或设置一个值,该值指示一旦向表中添加了行,列是否还允许更改

 

八、向Data Table中添加数据行

//创建新行方式给虚拟表中添加数据
DataRow row =table.NewRow();使用DataTable的NewRow方法创建一个新DataRow对象
row[0]="编号";;//使用索引赋值列
row["UserName"] = "New UserName";;//使用列名赋值列
table.Rows.Add(row);

//调用Rows.Add来添加行
table.Rows.Add("编号","New UserName");增加列

//LoadDataRow方法。此方法类似于被重载的Add方法,利用该方法可以为新的DataRow提供值清单,
//要使用这一方法,在第一个参数中提供一个数组。该数组中的项对应于表中的列。
//第二个参数AccepteChanges控制新DataRow的RowState属性,
//为这一参数传递False值,将会导致新行的RowState为Added
table.LoadDataRow(new object[] { "编号", "New UserName" },false);
object[] aValues ={"编号","New UserName"};
table.LoadDataRow(aValues,false);

 

九、修改DataTable现有行数据

//修改现有行
//使用Rows集合的Find方法来查找DataTable中的一行,然后改变每一列的值
DataRow row = table.Rows.Find("UserId");
if (row == null)
{
     Console.Write("没有这一列");
}
else
{
     row["UserName"] = "new Value";
}

//使用ItemArray属性可用于在一行代码获取或修改多个行值,返回和接受一个数组,其中每一项对应于一列。
//如果希望仅修改行中可用值的一个子集,使用Null或Nothing来指示不希望覆盖DataRow中的列的值
DataRow row = table.Rows.Find("UserId");
if (row == null)
{
     Console.Write("没有这一列");
}
else
{
     row.ItemArray = new object[] { null, "New Value" };
}

 

十、删除DataTable现有行数据

//删除现有行
//首先获取行
DataRow row = table.Rows.Find("UserId");
if (row == null)
{
     Console.Write("没有这一列");
}
else
{
      table.Rows.Remove(row);
             //or
              table.Rows.RemoveAt(table.Rows.IndexOf(row));
}


//获取指定条件行数组,删除指定条件多行
//DataRow[] DeRow = 表名.Select("列名='数值'");
//foreach (DataRow dr in DeRow) { 表名.Rows.Remove(dr); }

 

 

十一、判断指定行->列的值是否为空及赋予空值

//查看是否为空
DataRow rowCustomer;
rowCustomer = table.Rows.Find("id");
if(rowCustomer.IsNull("Phone"))
    Console.WriteLine("为空");
else
    Console.WriteLine("不为空"); 

//赋予空值
rowCustomer["Phone"] = DBNull.Value;

 

以上就是DataTable的用法了

该文章转载于:博客园-Crazy Ma

posted @ 2021-06-23 19:15  青丝·旅人  阅读(550)  评论(0编辑  收藏  举报