ADO.NET知识点笔记

1 DataColumn 的DataType可以是任一数据类型,包括自义定类和结构.

DataTable 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是默认排序,可省略.
时间: 2024-08-24 22:38:47

ADO.NET知识点笔记的相关文章

BOM知识点笔记

Window 对象常见属性 innerHeight  当前窗口文档显示区域的高(这里的宽度和高度不包括菜单栏.工具栏以及滚动条等的高度.) innerWidth   当前窗口文档显示区域的宽(这里的宽度和高度不包括菜单栏.工具栏以及滚动条等的高度.) outerHeight  当前窗口文档(包含菜单栏.控制台.边框)的高 outerWidth   当前窗口文档(包含边框.滚动条)的宽 window对象常见方法 clearInterval()  setInterval()  setTimeout(

ADO.NET学习笔记之连接字符串

ADO.NET 2.0学习笔记之连接字符串 刚刚入门不久,想什么学习下dot net平台,就先从数据访问入手吧,从今天开始认真学习ado.net 2.0,为将来发展做好坚实基础. 连接字符串 SQL Client .net数据提供程序在连接到数据库时极其灵活,它提供了多种用以生成连接字符串的方式.可以使用关键字,例如“Data Sourse”.“Initial Catalog”,也可以使用"Server".“Database”等旧术语. 下面是两个例子,用于连接到SqlServer数据

ADO.NET 学习笔记 入门教程

本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=57&page=1&extra=#pid63 这是本人在学习ADP.NET过程中所作的笔记,可作为ADO.NET入门或者复习的教程. 连接字符串: DataSource=localhost; AttchDBFilename=|DataDirectory|\Database1.mdf; InitialCatalog=UserDate; Integrated Secu

《机器学习实战》知识点笔记目录

从今天起,开始学习<机器学习实战>,并记录学习到的知识点. -- 2017-12-31 1,第2章KNN算法笔记_函数classify0 原文地址:https://www.cnblogs.com/wang7/p/8158225.html

C#-ado.net学习笔记-会有更新

ado.net 通用类对象.在本地内存暂存数据 托管类对象.让本地通用类对象连接数据库,让本地通用类对象和数据库同步 连接数据库 new connection(connectstring) command=newconnection.createcommand 用command或dataset类对象读取.添加.更新.删除数据 用datasetview或datatable.params类对象筛选数据 用table类对象保存读取xml文件

ADO.NET学习笔记-读写数据

1. DbCommand对象 要读写数据,一是需要有效的数据链接,二是需要DbCommand对象向数据源传递SQL命令.DbCommand对象包含的命令可以是DML数据操作语言,也可以是DDL数据定义语言.创建DbCommand的最好方式是先创建DbConnection,然后使用DbConnection的CreateCommand()方法,这样创建的DbCommand与DbConnection之间最为匹配.DbCommand必备的两个重要属性为CommandText和CommandType,示例

ADO.NET学习笔记-事务处理

1. 事务的定义 事务是指不可划分,必须同时执行的工作.如果组成事务的各项工作均得到执行,则事务执行成功,若其中一项未执行,则事务回滚至初始状态,执行失败.事务包含4个基本属性(ACID): 原子性(AUTOMICITY),不可划分为更小单元 一致性(CONSISTENCY),事务对外是一个整体 隔离性(ISOLATION),其内部对其他事务是不可见的 持久性(DURABILITY),当断电恢复时,未成功提交的事务将回滚至初始状态 2. 并发模型和数据库锁定事务的一致性和隔离性属性依靠数据库的锁

ADO.NET学习笔记-链接到Data Store

1. 使用数据提供程序(Providers)移动数据 .NET默认包含的数据提供程序有以下4种: OleDb odbc SQL Server Oracle 除此之外还可使用第三方数据提供程序,如Mysql和DB2等.数据提供程序的主要功能为在本地程序和远程数据源(Data Store)之间移动数据. 2.DbConnection对象 要获取数据,首先要有一个合法可用的数据链接(Connection),数据链接的抽象类为DbConnection,再由数据提供程序的不同继承生成对应的具体数据链接类,

ADO.NET学习笔记-非链接类

1. DataTable类 DataTable类即是存在于内存中的表格式数据,包括行.列及约束,其中行主要用于存储数据,而列和约束共同组成DataTable的Schema(架构). 2. 创建主键组合列 主键可以一列构成,也可由多列构成,统一起见,ADO.NET在创建主键时,都使用列数组,例: cars.PrimaryKey = new DataColumn[] { vin }; 3. 使用自增长列做为主键 在应用程序中设置自增长列的方法如下: 1) 将列的AutoIncrement属性设为tr