ASPNET揭秘笔记之三
当数据库连接被池化时,一组连接就处于打开状态,一边可以在多个用户之间来共享。当请求一个新的连接时,一个活动的连接就从连接池中移出。当关闭连接时,这个连接就被放回到连接池中。
在默认情况下,连接池在OleDb和SqlClient连接中都是被启用的。OleDb连接池由OLE DB.NET提供者来控制。SqlClient连接池则有Windows 2000组件服务来控制。
要利用连接池的优势,就必须在ASP.NET页面中注意两个问题:首先,必须在打开的每一个数据库连接时使用同样的连接字符串。只有使用同样的连接字符串打开的连接才能被放到同一个连接池中。
要在页面中利用连接池的优势,必须在每次打开连接的时候尽快地显示关闭连接。若果没有使用Close()方法显式关闭连接,则连接就不会被自动放回到连接池中。
使用SQL连接池,要在连接字符串中添加额外的选项,以便修正连接池如果运作。
Connection Lifetime(连接生命周期)-----在特定时间(单位为秒)后销毁连接。默认值为0,表示永不销毁.
Connection Reset(重置连接) -------表示在连接返回到连接池时,连接是否应当被重置。默认值True。
Enlist(征用)------表示连接是否应当在当前事务上下文中被自动征用。默认值True
Max Pool Size(最大池大小)-----在单个连接池中允许的最大连接数,(默认值为100)
Min Pool Size(最小池大小)------在单个连接池中允许的最小连接数,(默认值为0)
Pooling(池化)-----决定是否启用或禁用连接池,默认值为True;
高级数据库操作
事务:
创建事务的方法有三种。可以在数据库级别、ADO.NET级别或是在整个ASP.Net页面级别上创建事务.
创建数据库事务:
As
Begin TransAction
Update AcountA Set Balance=Lalance-1000 where UserName='smith'
update AcountB Set Blance=Blance+1000 where UserName='smith'
Commit TransAction
创建ADO.NET事务
ADO.NET可以通过Connection和Transaction类来支持事务。可以使用Connection类的Begin Transaction方法来创建一个新的事务。然后通过Command类的Transaction属性吧这个事务与多个Command关联
Dim conBank as SqlConnection
dim strUpdateAcctountA as string
dim strUpdateAcctountB as string
dim cmdA as SqlCommand
dim cmdB as sqlCommand
conBank=new SqlConnection("Server=.;Uid=sa;pwd=sa;database=Bank")
strUpdateAccountA=""
strUpdateAccoutnB=""
cmdA=new SqlCommand(strUpdateAccountA,conBank)
cmdB=new SqlCommand(strUpdateAccountB,conBank)
conBank.Open()
objTransaction=conBank.BeginTranaction
cmdA.Transaction=objTransaction
cmdB.Transaction=objTransaction
try
cmdA.ExecuteNonQuery()
cmdB.ExecuteNonQuery()
objTransaction.Commit
Response.Write("Transaction Successful!")
catch ex as Exception
objTransaction.RollBack
Response.Writte("Transaction Failed!")
finally
conBank.Close()
end try
创建ASP.Net页面的事务
通过在ASP.net页面中添加下列页面处理指令之一来为asp.net页面注册事务:
Disabled--对页面禁用事务,这是默认值。
NotSupported--表示页面不再事务中执行。
Supported--如果事务已经存在,页面就在事务上下文中执行,但是不会创建另外一个新事务。
Required--如果事务已经存在,页面就在事务上下文中执行,如果事务不存在,则创建一个新的事务。
RequiresNew--为每个请求创建一个新的事务。
在允许了针对ASP.Net页面的事务后,可以使用来自于ContextUtil类的两个放来来显式地提交或回滚一个事务:SetComplete和SetAbort方法。
dim strUpdateAcctountA as string
dim strUpdateAcctountB as string
dim cmdA as SqlCommand
dim cmdB as sqlCommand
conBank=new SqlConnection("Server=.;Uid=sa;pwd=sa;database=Bank")
strUpdateAccountA=""
strUpdateAccoutnB=""
cmdA=new SqlCommand(strUpdateAccountA,conBank)
cmdB=new SqlCommand(strUpdateAccountB,conBank)
conBank.Open()
try
cmdA.ExecuteNonQuery()
cmdB.ExecuteNonQuery()
ContextUtil.SetComplete()
Response.Write("Transaction Successful!")
catch ex as Exception
ContextUtil.SetAbort()
Response.Writte("Transaction Failed!")
finally
conBank.Close()
end try
检索数据表的架构信息:
使用DataReader类的GetSchemaTable()方法,GetSchemaTable()方法返回一个DataTable类的实例。
通常,要把GetSchemaTable()方法与CommandBehavior枚举类型的CommandBehavior.KeyInfo或CommandBehaVior.SchemaOnly值一起使用。
dim cmd as SqlCommand
dim dr as SqlDataReader
dim dt as DataTable
conn=new SqlConnection("server=.;uid=sa;pwd=sa;database=pubs")
cmd=new SqlCommand("select * from Authors",conn)
conn.open()
dr=cmd.ExecuteReader(Command.Behavior.KeyInfo or CommandBehavior.SchemaOnly)
dt=dr.GetSchemaTable()
myDataGrid.DataSource=dt
myDataGrid.DataBind()
dr.close()
conn.close()
转载于:https://www.cnblogs.com/sonrain/archive/2008/07/15/1243345.html
ASPNET揭秘笔记之三相关推荐
- linux系统管理学习笔记之三----软件的安装
linux系统管理学习笔记之三----软件的安装 2009-12-29 19:10:02 标签:linux 系统管理 [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 ...
- 《需求工程-软件建模与分析之读书笔记之三》
<需求工程-软件建模与分析之读书笔记之三> 第14章<面向对象建模>采用了面向对象方法学的世界观,将系统看作是一系列对象的集合,每个对象具有独立的职责,完成独立的任务,对象之间 ...
- 构建之法阅读笔记之三
构建之法阅读笔记之三 本章为团队和流程,主要介绍了典型的软件团队模式和开发流程以及它们的优缺点.TSP.MVP.MBP.RUP 团队:并不是几个人凑到一起就叫团队,称之为团队 1.应该有一致的集体目标 ...
- 重构(Refactoring)技巧读书笔记 之三
重构(Refactoring)技巧读书笔记 之三<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:of ...
- 数据隐藏技术揭秘笔记
目录 数据隐藏技术揭秘笔记 第一章 密写术的发展史 第二章 数据隐藏简单练习4则 2.1 在word中隐藏数据 2.2 图像元数据 2.3 移东设备数据隐藏 2.4 文件压缩工具的数据隐藏 第三章 隐 ...
- 学习笔记之三人表决器FPGA
学习笔记之三人表决器FPGA 新手入门,多多包涵,不足错误之处,望指出 三人表决器,顾名思义就是三人投票,只要达到两票以上,就取胜. 设a,b,c为三个投票的人,输出的为f,投为1,不投为0,两票以上 ...
- EDUSOHO踩坑笔记之三十三:班级
EDUSOHO踩坑笔记之三十三:班级 班级 班级 获取班级信息 获取班级列表 班级成员 获取班级计划 加入班级 营销平台加入班级 班级 班级 获取班级信息 GET /classrooms/{class ...
- 2010年SQLite学习笔记之三
2010年SQLite学习笔记之三 一.如何备份数据库 先打开数据库test.db E:/sqlite/tool/sqlite-3_6_22>sqlite3 D:/Test/debug/tes ...
- TensorFlow学习笔记之三(神经网络的优化)
文章目录 1. 使用激活函数去线性化(为什么要用激活函数) 实验证明线性模型的局限性 常用激活函数 2. 神经网络复杂度:用网络层数和网络参数的个数表示 3. 损失函数(loss):预测值(y)与已知 ...
最新文章
- 顶会ASPLOS 新成果解析:用“弹性异构”防御DNN加速器对抗攻击
- paramiko监控 windows服务器 被监控服务器只需要安装openssh服务即可基于wmic完成大部分监控...
- 2-16 HDO1106
- 揭秘ASP.NET 2.0的Eval方法(转)
- tf调不到keras怎么 回事_拼多多刷单关键词搜不到是怎么回事?如何解决?
- SAP OData etag flag setting in metadata MPC_EXT
- oracle数据库安装HotSpot,安装Oracle数据库软件遭遇诡异的HotSpot Virtual Machine Error : 11报错...
- mysql运算结果放入表中_MySQL表1新增数据,计算开始、结束日期之间所有时间,插入到表2中...
- 使用MyBatista----上传图像
- autocomplete自动补全,远程json数据
- 联想笔记本卸载McAfee
- linux查询电脑mac地址,查看MAC地址的几种方法汇总
- IDL读写FITS文件
- 笨方法学 python3怎么样_笨办法学python3日常问题解决
- 电容ESR表(一) 电容ESR表的特点、测量原理、电路分析
- 一元多项式加减乘实现c/c++
- 许纪霖《中华儒家文化发展脉络》思维导图
- 2021.2.15-2.22 人工智能行业每周技术动态
- Error fetching server time: Detected 31.361999988555908 seconds time difference between your browser
- uniapp 打包安卓 Android 抖音app 前端篇~01
热门文章
- Python下基于requests及BeautifulSoup构建网络爬虫
- aarch64(ARMv8)交叉编译环境下载
- android 数据库 数组,如何从SQLITE数据库中获取数据到android中的数组?
- Acrobat如何修改PDF/A模式下的PDF文档
- Java 8实现BASE64编解码
- 开源软件执照检查和工具探讨(Discuss the audit tools for open source license GPL/LGPL/MIT)
- python特征工程意义_python数据挖掘--特征工程篇(附代码)
- Alertmanager配置
- shell 多个引号冲突_Html多个引号重叠使用冲突解决办法
- python 引用库的点.号_给大家分享一些实用的Python库