ASPNET揭秘笔记之三

 2023-09-09 阅读 19 评论 0

摘要:使用连接池提高性能: 当数据库连接被池化时,一组连接就处于打开状态,一边可以在多个用户之间来共享。当请求一个新的连接时,一个活动的连接就从连接池中移出。当关闭连接时,这个连接就被放回到连接池中。 在默认情况下,连接池在Ole
使用连接池提高性能:
    当数据库连接被池化时,一组连接就处于打开状态,一边可以在多个用户之间来共享。当请求一个新的连接时,一个活动的连接就从连接池中移出。当关闭连接时,这个连接就被放回到连接池中。
    在默认情况下,连接池在OleDb和SqlClient连接中都是被启用的。JavaScript笔记?OleDb连接池由OLE DB.NET提供者来控制。SqlClient连接池则有Windows 2000组件服务来控制。
    要利用连接池的优势,就必须在ASP.NET页面中注意两个问题:首先,必须在打开的每一个数据库连接时使用同样的连接字符串。只有使用同样的连接字符串打开的连接才能被放到同一个连接池中。java笔记,
    要在页面中利用连接池的优势,必须在每次打开连接的时候尽快地显示关闭连接。若果没有使用Close()方法显式关闭连接,则连接就不会被自动放回到连接池中。
    使用SQL连接池,要在连接字符串中添加额外的选项,以便修正连接池如果运作。
    Connection Lifetime(连接生命周期)-----在特定时间(单位为秒)后销毁连接。ASP考试?默认值为0,表示永不销毁.
    Connection Reset(重置连接) -------表示在连接返回到连接池时,连接是否应当被重置。默认值True。
    Enlist(征用)------表示连接是否应当在当前事务上下文中被自动征用。默认值True
    Max Pool Size(最大池大小)-----在单个连接池中允许的最大连接数,(默认值为100)
    Min Pool Size(最小池大小)------在单个连接池中允许的最小连接数,(默认值为0)
    Pooling(池化)-----决定是否启用或禁用连接池,默认值为True;

高级数据库操作

事务:
创建事务的方法有三种。aspnet网站开发教程,可以在数据库级别、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--表示页面不再事务中执行。ASP.NET?
    Supported--如果事务已经存在,页面就在事务上下文中执行,但是不会创建另外一个新事务。
    Required--如果事务已经存在,页面就在事务上下文中执行,如果事务不存在,则创建一个新的事务。
    RequiresNew--为每个请求创建一个新的事务。

    在允许了针对ASP.Net页面的事务后,可以使用来自于ContextUtil类的两个放来来显式地提交或回滚一个事务:SetComplete和SetAbort方法。ASP和JSP。

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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/23532.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息