分享
 
 
 

Ado.net快马加鞭

王朝c#·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

当然首先是使用链接池了~~

连接池

Connection Timeout--尝试连接数据存储区时的等待时间默认是15秒

Min Pool Size-连接池的最小容量

Max Pool Size-连接池最大容量默认是100

Pooling 默认是true则请求从连接池返回一个新的连接,没有泽创建

Connection Reset表示在从连接池中删除数据库连接时,将会重置该连接,默认是true,如果设置成false则在创建连接时往返服务器的次数会更少但是不更新连接状态

如果出了毛病就~~SqlConnection.ClearAllPools();//清除连接池

------然后是重头戏~~自然是使用异步咯

1首先在连接字符串中设置一个 async=true

-------理论就这么多了~~看段代码爽爽把

31041条纪录4秒

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

public partial class Default5 : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void Button1_Click(object sender, EventArgs e)

{

DateTime old = DateTime.Now;

SqlConnection DbCon;

SqlCommand Command = new SqlCommand();

SqlDataReader OrdersReader;

IAsyncResult AsyncResult;//异步

DbCon = new SqlConnection();

DbCon.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringInfo"].ConnectionString;

Command.Connection = DbCon;

Command.CommandText = "Select";

Command.CommandType = CommandType.StoredProcedure;

Command.Connection = DbCon;

try

{

DbCon.Open();

AsyncResult = Command.BeginExecuteReader();

while (!AsyncResult.IsCompleted)//获取异步操作是否已完成的指示。

{

//由于异步操作必须阻止线程秒钟

System.Threading.Thread.Sleep(10);

}

OrdersReader = Command.EndExecuteReader(AsyncResult);

GridView1.DataSource = OrdersReader;

GridView1.DataBind();

}

catch (System.Exception)

{

}

TimeSpan not=DateTime.Now-old;

Label1.Text = not.Seconds.ToString();

}

}

- -上面的只是小事伸手~~来个速度更快的

//最强大的wait调用,只是把System.Threading.WaitHandle.WaitAll换成,System.Threading.WaitHandle.WaitAny因为System.Threading.WaitHandle.WaitAny

//可以在某一格进程结束后得到处理,修改try部分--注意看

protected void Button4_Click(object sender, EventArgs e)

{

DateTime old = DateTime.Now;

//实际上就是在第一个结果集是检索的源,第二个结果集实际上只要查询第一个结果集里面有的字段,不会在数据库中查寻,而是用第一个结果集

SqlConnection DBCon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringInfo"].ConnectionString);

SqlCommand Table_1Command = new SqlCommand("select * from Table_2 where Id>4000001", DBCon);//---这里执行查询后

SqlCommand MMCommand = new SqlCommand("select Title ,Content from MM,Table_2 where MM.ID=Table_2.Id", DBCon);//Table_2.Id其实是上面的Table_2地一列

Table_1Command.CommandType = CommandType.Text;

MMCommand.CommandType = CommandType.Text;

SqlDataReader Table_1DataReader;

SqlDataReader MMDataReader;

IAsyncResult Table_1AsyncResult;

IAsyncResult MMAsyncResult;

System.Threading.WaitHandle[] WHandles = new System.Threading.WaitHandle[2];

//封装等待对共享资源的独占访问的操作系统特定的对象。

System.Threading.WaitHandle Table_1Whandle;

System.Threading.WaitHandle MMWhandle;

try

{

DBCon.Open();

Table_1AsyncResult = Table_1Command.BeginExecuteReader();

MMAsyncResult = MMCommand.BeginExecuteReader();

Table_1Whandle = Table_1AsyncResult.AsyncWaitHandle;

MMWhandle = MMAsyncResult.AsyncWaitHandle;

WHandles[0] = Table_1Whandle;

WHandles[1] = MMWhandle;

System.Threading.WaitHandle.WaitAny(WHandles);

for (int index = 0; index < 2; index++)

{

//--------返回完成执行等待句柄索引该数据在WHandles索引里面的某个

int whindex = System.Threading.WaitHandle.WaitAny(WHandles);

switch (whindex)

{

//注意这里必须和上面装入WHandles集合的索引一样

case 0:

Table_1DataReader = Table_1Command.EndExecuteReader(Table_1AsyncResult);

GridView1.DataSource = Table_1DataReader;

GridView1.DataBind();

break;

case 1:

MMDataReader = MMCommand.EndExecuteReader(MMAsyncResult);

GridView2.DataSource = MMDataReader;

GridView2.DataBind();

break;

}

}

}

catch (System.Exception)

{

}

finally

{

DBCon.Close();

}

TimeSpan not = DateTime.Now - old;

Label1.Text = not.Seconds.ToString();

}

~~上面的可是高级应用--不过在怎么提速安全第一

首先要设置三台服务器~~或者是三个sqlserver实例咯

主要服务器为.

景象服务器为.\Partner

观察者服务器为.\Witness

然后再连接字符串中设置 FailOver Parter=".\Partner"即可

--当往主服务器中插入数据的时候竟象服务器也会插入数据,如果主服务器停止工作则景象服务器被观察者服务器设置为主服务器

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有