ADO.NET知识点笔记-创新互联
1 DataColumn 的DataType可以是任一数据类型,包括自义定类和结构.
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站建设、做网站、市中网络推广、成都小程序开发、市中网络营销、市中企业策划、市中品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联公司为所有大学生创业者提供市中建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.comDataTable dt = new DataTable("Product"); dt.Columns.Add("ProductId",typeof(int)); dt.Columns.Add("ProductProperty", typeof(ProductProperty)); DataRow r1 = dt.NewRow(); r1["ProductId"] = 1; r1["ProductProperty"] = new ProductProperty() { ProductionDate = DateTime.Now, Desc = "牛奶糖" }; dt.Rows.Add(r1); foreach(DataRow dr in dt.Rows) { Console.WriteLine("productId {0};ProductionDate:{1};Desc:{2};", dr["ProductId"].ToString(), (dr["ProductProperty"] as ProductProperty).ProductionDate.ToString(), (dr["ProductProperty"] as ProductProperty).Desc); }
2 Unique属性标记为True 的DataColumn 不请允许有NULL值.
3 判断DataRow中某个列是否已经修改
//oneRow.DataRowState=DataRowState.Changed,否则可能没有Original版本 if(oneRow.HasVersion(DataRowVersion.Proposed)) { if(oneRow["Salary",DataRowVersion.Original]!=oneRow["Salary",DataRowVersion.Proposed]) { //salary field has changed } }
4 使用DataRow.BeginEdit() DataRow.EndEdit() 延迟数据验证,同时减少RowChanged事件触发次数
oneRow.BeginEdit(); oneRow["ProductName"]="ColaVeryGood";//ProductName MaxLength 为10 oneRow["UnitPrice"]=12.4;//UnitPrice 大值为 10.0 oneRow.EndEdit();//直到此时才发生数据验证异常,如果没有异常,则发生RowChanged事件,而不会触发两次事件.
5 基于验证的错误
利用DataColumnChanging,DataRowChanging,可以修改的数据进行验证,防止不符合验证程序的数据输入到列字段或提示出数据不合法.
private void app_ColumnChanging(object sender,DataColumnChangeEventArgs e) { if(e.Column.ColumnName=="Age") { if((int)e.ProposedValue>120) e.Row.SetColumnError(e.Column,"Human can't live that long"); } }
6 列级别的错误
public void ShowFirstRowError(DataRow row) { string errorText = "No error!"; DataColumn[] errorColumns = row.GetColumnsInError(); if(errorColumns.Count>0) { errorText= row.GetColumnError(errorColumns[0]); } else if(row.RowError.Length>0) { errorText = row.RowError; } // show errorText }
7 按主键搜索行
DataRow matchRow = someTable.Rows.Find(searchValue);//single-part key DataRow matchRow = someTable.Rows.Find(new object[]{value1,value2})//multi-Part key; //如果未找到行,返回null
8 用搜索条件选择行及排序
//匹配字条串时区分大小写 //someTable.CaseSensitive=True;//默认不区分大小写 DataRow[] matchRows = someTable.Select(filterCriteria,sortRules); //filterCriteria 过滤表达式参考 DataColumn.Expression 很强大 //sortRules OrderDate DESC,CustomerName ASC,ASC是默认排序,可省略.
9 产生单一聚合
产生单一聚合是指使用聚合方法计算某个表的字段,但不作为一个表的计算列,例如:
decimal averageSalary = (decimal)employeeTable.Compute("Avg(Salary)",filterExpression); //其他"Avg(Salary)"是计算表达式,如计算列的计算表达式一样 //filterExpression 是过滤表达式,和DataTable.Selete()方法的过滤表达式一样.
10 DataView
DataView是DataTable的视图,是对表的列的一个索引,并不直接包含具体的列.被包含的列仍然属于原来的DataTable.
DataView 有三个重要的属性.
RowFilter:列过滤表达式,与DataTable的表达式一样
Sort:排序表达式
RowStateFilter:根据DataRow的 RowState属性过滤列,并且可以指定要显示的数据的版本.比如DataRowViewState.ModifiedOriginal 显示RowState为Changed的列的原始版本的数据.
每次设置三个属性之一都会重建其对底层DataTable的索引,为减少重建次数,应该尽量在 DataView()构造方法中设置好这三个属性.
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章题目:ADO.NET知识点笔记-创新互联
浏览地址:http://ybzwz.com/article/deigjp.html