使用连接池提高性能:
    当数据库连接被池化时,一组连接就处于打开状态,一边可以在多个用户之间来共享。当请求一个新的连接时,一个活动的连接就从连接池中移出。当关闭连接时,这个连接就被放回到连接池中。
    在默认情况下,连接池在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页面级别上创建事务.
创建数据库事务:

Create Procedure UpdateAccounts
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 objTransaction as SqlTransaction
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 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()

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 conn as SqlConnection
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揭秘笔记之三相关推荐

  1. linux系统管理学习笔记之三----软件的安装

    linux系统管理学习笔记之三----软件的安装 2009-12-29 19:10:02 标签:linux 系统管理 [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 ...

  2. 《需求工程-软件建模与分析之读书笔记之三》

    <需求工程-软件建模与分析之读书笔记之三> 第14章<面向对象建模>采用了面向对象方法学的世界观,将系统看作是一系列对象的集合,每个对象具有独立的职责,完成独立的任务,对象之间 ...

  3. 构建之法阅读笔记之三

    构建之法阅读笔记之三 本章为团队和流程,主要介绍了典型的软件团队模式和开发流程以及它们的优缺点.TSP.MVP.MBP.RUP 团队:并不是几个人凑到一起就叫团队,称之为团队 1.应该有一致的集体目标 ...

  4. 重构(Refactoring)技巧读书笔记 之三

    重构(Refactoring)技巧读书笔记 之三<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:of ...

  5. 数据隐藏技术揭秘笔记

    目录 数据隐藏技术揭秘笔记 第一章 密写术的发展史 第二章 数据隐藏简单练习4则 2.1 在word中隐藏数据 2.2 图像元数据 2.3 移东设备数据隐藏 2.4 文件压缩工具的数据隐藏 第三章 隐 ...

  6. 学习笔记之三人表决器FPGA

    学习笔记之三人表决器FPGA 新手入门,多多包涵,不足错误之处,望指出 三人表决器,顾名思义就是三人投票,只要达到两票以上,就取胜. 设a,b,c为三个投票的人,输出的为f,投为1,不投为0,两票以上 ...

  7. EDUSOHO踩坑笔记之三十三:班级

    EDUSOHO踩坑笔记之三十三:班级 班级 班级 获取班级信息 获取班级列表 班级成员 获取班级计划 加入班级 营销平台加入班级 班级 班级 获取班级信息 GET /classrooms/{class ...

  8. 2010年SQLite学习笔记之三

    2010年SQLite学习笔记之三 一.如何备份数据库 先打开数据库test.db E:/sqlite/tool/sqlite-3_6_22>sqlite3  D:/Test/debug/tes ...

  9. TensorFlow学习笔记之三(神经网络的优化)

    文章目录 1. 使用激活函数去线性化(为什么要用激活函数) 实验证明线性模型的局限性 常用激活函数 2. 神经网络复杂度:用网络层数和网络参数的个数表示 3. 损失函数(loss):预测值(y)与已知 ...

最新文章

  1. 顶会ASPLOS 新成果解析:用“弹性异构”防御DNN加速器对抗攻击
  2. paramiko监控 windows服务器 被监控服务器只需要安装openssh服务即可基于wmic完成大部分监控...
  3. 2-16 HDO1106
  4. 揭秘ASP.NET 2.0的Eval方法(转)
  5. tf调不到keras怎么 回事_拼多多刷单关键词搜不到是怎么回事?如何解决?
  6. SAP OData etag flag setting in metadata MPC_EXT
  7. oracle数据库安装HotSpot,安装Oracle数据库软件遭遇诡异的HotSpot Virtual Machine Error : 11报错...
  8. mysql运算结果放入表中_MySQL表1新增数据,计算开始、结束日期之间所有时间,插入到表2中...
  9. 使用MyBatista----上传图像
  10. autocomplete自动补全,远程json数据
  11. 联想笔记本卸载McAfee
  12. linux查询电脑mac地址,查看MAC地址的几种方法汇总
  13. IDL读写FITS文件
  14. 笨方法学 python3怎么样_笨办法学python3日常问题解决
  15. 电容ESR表(一) 电容ESR表的特点、测量原理、电路分析
  16. 一元多项式加减乘实现c/c++
  17. 许纪霖《中华儒家文化发展脉络》思维导图
  18. 2021.2.15-2.22 人工智能行业每周技术动态
  19. Error fetching server time: Detected 31.361999988555908 seconds time difference between your browser
  20. uniapp 打包安卓 Android 抖音app 前端篇~01

热门文章

  1. Python下基于requests及BeautifulSoup构建网络爬虫
  2. aarch64(ARMv8)交叉编译环境下载
  3. android 数据库 数组,如何从SQLITE数据库中获取数据到android中的数组?
  4. Acrobat如何修改PDF/A模式下的PDF文档
  5. Java 8实现BASE64编解码
  6. 开源软件执照检查和工具探讨(Discuss the audit tools for open source license GPL/LGPL/MIT)
  7. python特征工程意义_python数据挖掘--特征工程篇(附代码)
  8. Alertmanager配置
  9. shell 多个引号冲突_Html多个引号重叠使用冲突解决办法
  10. python 引用库的点.号_给大家分享一些实用的Python库