ASP.NET初识5
1、连接池技术
默认,ADO.NET中启用连接池,避免服务器端多次分配资源进行连接的过程,提高了英语程序的伸缩性和拓展性
Connection Lifetime:0值将使连接池具有最大的连接超时
Connection Reset:确定从池中提取数据库连接时是否重置数据库连接
Endlist:池程序在创建线程的当前是福上下文中自动登记连接
Load Balance Timeout:连接被销毁之前在连接池中生存的最短时间(以秒为单位)
Max Pool Size:池中允许的最大连接数
Min Pool Size:池中允许的最小连接数
Pooling:当值为true时,系统将从适当的池中提取SQLConnection对象,或在需要时创建该对象并将其添加到适当的池中
2、清除连接池的方法
ClearAllPools:直接清除所有与SQL Server相关的连接池
ClearPool:清除特定的连接
3、CommandBehavior的可选值
SingleResult:查询返回一个结果集
SchemaOnly:查询仅返回列信息
KeyInfo:查询返回列和主键信息
SingleRow:在执行返回多个结果集的查询时,查询应返回一行,但是每个结果集只有一行
SequentialAccess:在DataReader处理包含带有大二进制值的列的行,SequentialAccess不是加载整行,而是使DataReader将数据作为流来加载,然后可以使用GetBytes或GetChars方法来指导开始读取操作的自己位置,以及正在返回的数据的有限缓冲区大小
CloseConnection:在执行该命令时,如果关闭Datareader对象,则关联的Connection对象也将关闭
4、ParameterDirection类型的枚举值
Input:参数是输入参数,默认值
Output:参数是输出参数
InputOutput:参数既能输入也能输出
ReturnValue:参数表示诸如存储过程、内置函数或用户自定义函数之类的操作的返回值
5、使用存储过程
CommandType应该设置为CommandType.StoredProcedure
6、事务
引用System.Transactions命名空间
初始化SqlConnection之前,先申明一个SqlTransaction的类,用于处理数据库事务
打开连接后,使用SqlConnection方法开启一个事务,并返回一个事务对象,再将该事务对象赋给SqlCommand对象
Sqlcommand对象现在处理一个事务环境,等待SqlTransaction对象调用Commit方法提交到数据库或者是RollBack方法回滚数据库
7、BeginTransaction方法有多个重载方法
SqlTransaction对象的枚举属性IsolationLevel,枚举值如下
Unspecified正在使用与指定隔离级别不同的隔离级别,但是无法确定该级别
Chaos无法覆盖隔离级别更高的事务中的挂起的更改
ReadUncommitted可以进行脏读,即不发布共享锁,也不接受独占锁
ReadCommitted在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以更改数据,从而导致不可重复的读取或幻象数据
RepeatableRead在查询中使用的所有数据上放置锁,以防止其他用户更新这些数据。防止不可重复的读取,但是仍可以有幻象行
Serializable在DataSet上放置范围锁,以防止事务完成之前由其他用户更新行或向数据集中插入行
Snapshot 通过在一个应用程序正在修改数据时存储另一个应用程序可以读取的相同数据版本来减少阻止
更改隔离级别:transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted)
8、DataAdapter和DataSet
DataAdapter对象的FillSchema可以为DataSet填充架构信息而不填充数据sda.FillSchema(ds,SchemaType.Mapped)
9、DataColumn对象的属性
AllowDBNull:指定列是否允许为空
AutoIncrement:是否允许列自动递增值
AutoInCrementSeed:指定列字符递增的种子
10、使用DataSet对象
需要在多个表之间导航
使用来自多个源的数据
需要在表中来回定位
需要与远程机器交换数据
缓存、排序、搜索或筛选数据
11、使用DataReader
只需要进行显示,不需要考虑更改的数据,例如一些系统的帮助信息,像单位、部门、公司信息等,并不需要经常被修改
数据不需要被缓存,每次刷新都要从数据库中获取新的数据
需要以只读、前向的方式访问数据
结果集太大,占用太多内存