只想知道 发表于 2015-1-16 22:38:07

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中包含了插入/删除的记录的所有字段的值(太爽了。。)

飘灵儿 发表于 2015-1-17 14:10:14

Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。

柔情似水 发表于 2015-1-20 19:09:05

微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。

兰色精灵 发表于 2015-1-29 15:31:16

XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)

再见西城 发表于 2015-2-6 02:25:16

光写几个SQL实在叫无知。

海妖 发表于 2015-2-15 01:50:35

记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。

因胸联盟 发表于 2015-3-4 10:54:40

是要和操作系统进行Socket通讯的场景。否则建议慎重!

透明 发表于 2015-3-11 18:31:52

换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的

谁可相欹 发表于 2015-3-19 07:39:47

对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。

小妖女 发表于 2015-3-27 14:25:36

可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
页: [1]
查看完整版本: MSSQL编程:关于存储历程的ADO挪用的一些心得(输入...