|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
mysql使用内部操作字符集gbk来进行操作,即执行"SELECT*FROMtestWHEREname=xxxor1=1/*LIMIT1";从而注入成功初级|数据|数据库
1、毗连池
1、特性:
①、长处:功能
②、弱点:大概存在多个没有被利用的毗连,资本华侈
2、ADO.NET毗连池
①包括在ADO.NET中的每一个.NET数据供应程序都可完成毗连池。
②每一个毗连池都与一个自力的毗连字符串及其事件高低文联系关系。每次翻开一个新的毗连,数据供应者会实验将指定的毗连字符串与毗连池的字符串举行婚配。假如失利,则创立新毗连并到场毗连池。
③毗连池创立以后,体系会创立一些毗连工具并将它们到场毗连池,直至到达额外的最小毗连工具数目。今后依据必要创立新的毗连,直抵达到最年夜毗连数目。
④.NET默许是利用毗连池。假如想禁用,则可使用以下体例:
Ⅰ、利用SqlConnection工具时,在毗连字符串到场:Pooling=false
Ⅱ、利用OleDBConnection工具时,在毗连字符串到场:OLEDBServices=-4
3、提醒和技能
①翻开毗连应迟,封闭毗连应早
②在封闭数据库毗连前确保封闭了一切用户界说的事件
③最少包管毗连池中有一个毗连可用
2、缓存
1、特性
①、长处:进步功能,不乱性,可用性
②、ASP.NET缓存
Ⅰ、在ASP.NET中,供应了专门用于缓存数据的Cache工具,它的使用局限是使用程序域。保存期是和使用程序严密相干的,每当使用程序启动的时分就从头创立Cache工具,每当使用程序启动的时分就从头创立Cache工具。它与Application工具的次要区分就是供应了专门用于缓存办理的功能,好比依附和过时战略。
Ⅱ、Cache工具界说在System.Web.Caching定名空间,可使用HttpContext类的Cache属性或Page工具的Cache属性来失掉Cache的援用,Cache工具除存储键值之外,还能够存储.NET框架的工具。
2、依附和过时战略
①文件战略:当硬盘上的某个(某些)文件变动时,强迫移除缓存数据
CacheDependencycDependency=newCacheDependency(Server.MapPath(“authors.xml”));
Cache.Insert(“CachedItem”,item,cDependency);
②键值依附:指定缓存中的某个数据项变动时移除。
//Createacacheentry
Cache[“key1”]=“Value1”;
//Makekey2dependentonkey1
String[]dependencyKey=newString[1];
dependencyKey[0]=“Key1”;
CacheDependencydependency=newCacheDependency(null,dependencyKey);
Cache.Insert(“key2”,“Value2”,dependency);
③基于工夫的过时战略:相对和绝对
//Absoluteexpiration
Cache.Insert(“CachedItem”,item,null,DateTime.Now,AddSeconds(5),Cache.NoSlidingExpiration);
//Slidingexpiration
Cache.Insert(“”,item,null,Cache.NoAbsoluteExpiration,TimeSpan.FromSeconds(5));
④数据库依附(倡议不要利用):数据库中相干的数据产生变更,则缓存生效
3、利用缓存:因为数据会过时,利用缓存时必需反省数据的无效性
stringdata=(string)Cache[“MyItem”];
if(data==null)
{
data=GetData();
Cache.Insert(“MyItem”,data);
}
4、缓存回调:当缓存生效时,主动挪用
CacheItemRemoveCallbackonRemove=newCacheItemRemovedCallack(this.RemoveCallback);
Cache.Insert(“CachedItem”,item,null,Cache.NoAbsoluteExpiration,Cache.NoSlidingExpiration,CacheItemPriority.Default,onRemove);
//Implementthefunctiontohandletheexpirationofthecache.
publicvoidRemovedCallback(stringkey,obejctvalue,CacheItemRemonvedReasonr)
{
//Testwhethertheitemisexpiredandreinsertitintothecache.
if(r==CacheItemRemovedReason.Expired)
{
//Reinsertitintothecacheagain.
CacheItemRemovedCallbackonRemove==null;
onRemove=newCacheItemRemoveCallback(this.RemovedCallback);
Cache.Insert(key,value,null,Cache.NoAbsoluteExpiration,Cache.NoSlidingExpiration,CacheItemPriority.Default,onRemove);
}
}
5、缓存优先级:当运转使用程序服务器的内存不敷时,会主动分明缓存中的数据,称为“扫除scavenging”
Cache.Insert(“DSN”,connectionString,null,d,t,CacheItemPriority.High,onRemove);
6、在非Web项目中利用ASP.NET缓存
HttpRuntime.Cache工具能够在Aspnet_wp.exe以外的每一个使用程序域中存在。
HttpRuntimehttpRT=newHttpRuntime();
Cachecache=HttpRuntime.Cache;
3、事件
1、间接写进到sql中:在存储过程当中利用BeginTrans,CommitTrans,RollBackTrans完成。
BeginTrans
Declare@orderDetailsErrorint,@productErrorint
Deletefrom"OrderDetails"whereProductID=42
Select@orderDetailsError=@@Error
DeletefromProductswhereProductID=42
Select@productError=@@Error
if@orderDetailsError=0and@productError=0
CommitTrans
else
RollBackTrans
长处:一切的事件逻辑包括在一个独自的挪用中
具有运转一个事件的最好功能
自力于使用程序
限定:事件高低文仅存在于数据库挪用中
数据库代码与数据库体系有关
2、利用ADO.NET完成:能够在两头层来办理事件。SqlConnection和OleDBConnection工具有一个BeginTransaction办法,能够前往SqlTransaction或OleDbTransaction工具。
cn.Open();
SqlTransactiontrans=cn.BeginTransaction();
SqlCommandcmd=newSqlCommand();
try
{
cmd.CommandText="Delete[OrderDetails]whereProductID=23";
cmd.ExecuteNonQuery();
cmd.CommandText="DeleteProductswhereProductID=23";
cmd.ExecuteNonQuery();
Trans.Commit();
}
Catch(Exceptione)
trans.Rollback();
Finally
cn.Close();
长处:复杂性;和数据库事件差未几的快;自力于数据库
弱点:事件不克不及超过多个数据库毗连;
事件实行在数据库毗连层上,以是必要在事件过程当中保护一个数据库毗连;
4、散布式事件
1、特性:
要介入COM+事件,.NET类必需是从System.EnterpriseServices.ServicedComponent类承继。
经由过程利用System.EnterpriseServices.ContextUtil类能够猎取有关COM+工具高低文信息,它供应SetComplete和SetAbort办法,以便分离显现提交和回滚事件。
长处:在必要事件跨MSMQ和其他可辨认事件的资本运转体系中,只能利用DTC或COM+事件。DTC和谐介入散布式事件的一切资本办理器,也办理与事件相干的操纵。
弱点:因为存在DTC和COM相互操纵性开支,招致功能下降。
2、事件范例:
①、主动事件:利用System.EnterpriseServices.AutoComplete属性
[Transaction(TransactionOption.Required)]
publicclassClass1:ServicedComponent
{
[AutoComplete]
publicvoidExample()
{}
}
②、手动事件
publicstringTransferMoneyFromBToA(doublem)
{
try
{
ContextUtil.EnableCommit();
this.TransferOutFromB(m);
this.TransferInToA(m);
ContextUtil.SetComplete();
}
catch(Exceptionerr)
{
ContextUtil.SetAbort();
}
}
3、体例选择
关于上面的情形,需利用手工事件处置:对单个数据库实行事件处置;
关于上面的情形,则宜利用主动事件处置:
①、必要将单个事件处置扩大到多个远程数据库时;
②、必要单个事件处置具有多个资本办理器(如数据库和Windows2000动静行列资本办理器)时;
注重:制止混用事件处置模子,最好只利用个中一个。
“数据行级锁定”的意思是指在事务操作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE命令以及INSERT、UPDATE和DELETE命令。 |
|