MSSQL编程:关于存储历程的ADO挪用的一些心得(输入...
mysql使用内部操作字符集gbk来进行操作,即执行"SELECT*FROMtestWHEREname=xxxor1=1/*LIMIT1";从而注入成功ado|存储历程|心得在一个项目中,我必要用到存储历程来会见数据,为了供应一个对照分歧的接口以便挪用,我没有利用CreateParameter(),而是挪用CommandPtr的Refresh()函数先从数据库中查询参数.
_ConnectionPtrm_pConn;
m_pConn.CreateInstance(__uuidof(Connection));
m_pConn->Open("driver={SQLServer};server=127.0.0.1;DATABASE=pub;UID=sa;PWD=","","",0);
_CommandPtrm_pCommand;
m_pCommand.CreateInstance(__uuidof(Command));
_RecordsetPtrm_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pCommand->ActiveConnection=m_pConn;
m_pCommand->CommandText="SP_XX";//存储历程名
m_pCommand->PutCommandType(adCmdStoredProc);
m_pCommand->Parameters->Refresh();//从数据库查询参数信息
接上去就能够对每个参数赋值了:
longcnt=m_pCommand->Parameters->GetCount();//获得参数的个数
for(longk=1;k<cnt;k++)
{//因为ADO中以为前往值是第一个参数,因而这里用k=1滤失落第一个参数
m_pCommand->Parameters->GetItem(k)->Value=XXX;//按存储历程的参数按次给参数赋值
}
如今能够实行这个存储历程了
m_pRecordset=m_pCommand->Execute(0,0,adCmdStoredProc);
这个时分,假如接上去用
_variant_tret_val=m_pCommand->Parameters->GetItem((long)0)->Value;
那末将得不到值
而假如像上面如许挪用的话就能够失掉前往值了
m_pRecordset->Close();
_variant_toutput_para=m_pCommand->Parameters->GetItem((long)0)->Value;
MSADO.net给这一征象的复兴是:
Youcanthinkofastoredprocedureasafunctioninyourcode.Thefunctiondoesn’treturnavalueuntilithasexecutedallofitscode.Ifthestoredprocedurereturnsresultsandyouhaven’tfinishedprocessingtheseresults,thestoredprocedurehasn’treallyfinishedexecuting.Untilyou’veclosedtheDataReader,thereturnandoutputparametersofyourCommandwon’tcontainthevaluesreturnedbyyourstoredprocedure.
也就是说Execute()函数应当当作是直到m_pRecordset关失落今后才会准确前往.
关于输入参数的处置也和这一样,由于前往值自己就是当做输入参数来处置的.
经由过程这类办法,我们能够失掉一个存储历程的前往值和了局集,并且关于一切的存储历程都能够一样利用,不用为某个特定的存储历程往写代码,具有必定的通用性.
对于insert和delete,event中包含了插入/删除的记录的所有字段的值(太爽了。。) Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。 微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。 XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!) 光写几个SQL实在叫无知。 记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。 是要和操作系统进行Socket通讯的场景。否则建议慎重! 换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的 对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。 可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
页:
[1]