到目前为止我们发现我们使用的DataTable对象、DataColumn对象和DataRow对象都是在调用DataAdapter的Fill()方法之后自动生成的,但是如何自己手动操作这些对象。
不过这几个对象的关系我们很清楚了,另外其实这几个对象的手动创建的方式有很多相似的地方,我也不想写很多冗余的,不过为了增加一定的阅读性,要是真的冗余了,也是为了文章更加的清晰。
在DataSet中创建DataTable:
DataSet ds = new DataSet("MyDataSet");
DataTable table = new DataTable("MyDataTable");
ds.Tables.Add(table);
使用语法糖:
DataSet ds = new DataSet("MyDataSet");
DataTable table = ds.Tables.Add("MyDataTable");
在DataTable中创建DataColumn
直接使用语法糖:
DataColumn col1 = table.Columns.Add("ID");
DataColumn col2 = table.Columns.Add("Name");
可以为DataColumn指定数据类型:
DataColumn col1 = table.Columns.Add("ID",typeof(int));
DataColumn col2 = table.Columns.Add("Name",typeof(string));
增加DataRow:
DataRow row = table.NewRow();
row["ID"] = 1;
row["Name"] = "LMF";
table.Rows.Add(row);
使用语法糖:
table.Rows.Add(1,"lmf");
修改现有行数据,在拥有一个row对象之后,可以使用对象的Item属性来设定一列数据的值,这个属性是可读写的,代码:
if(row!=null)
{
row["Name"] = "ming";
}
删除DataRow:
row.Delete();
移除DataRow:
1、table.Rows.Remove(row);
//根据行的索引移除
2、table.Rows.RemoveAt(table.Rows.IndexOf(row));
还有DataSet和DataTable类都具有一个Clear(),使用这个方法后会删除全部的DataRow对象,同时保留其结构:
table.Clear();
这里面删除和移除的区别是:删除是在DataSet中把这一行标记为Deleted,在将来提交数据库时候,在数据库中真实删除这一行数据。移除是单纯的在DataSet中移除这一条数据,然后在DataSet中就不能再次访问到,但是将来在提交数据库时,并不会删除该记录。
到目前为止,我们也仅仅讨论了,非常非常基础的部分,在后面是真的要拼刺刀的,blog也很难写,有兴趣继续了解的后面对DataSet中的数据关系处理和排序搜索筛选,以及向数据库提交更新的部分的请关注我:)