LaTatadu91
Messages postés967Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 2013
-
13 mars 2013 à 11:09
LaTatadu91
Messages postés967Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 2013
-
16 mars 2013 à 09:02
Bonjour,
Je code actuellement un programme en C++ (VS12) tournant sous windows (7)
qui doit en utilisant ADO exécuter une procédure stockée en passant des paramètres.
Je rencontre un soucis lors de l'execution de ce code : mes Variants s'écrasent mutuellement:
// test en dur
VARIANT vName;
vName.vt = VT_BSTR; //Variant type for BSTR
vName.bstrVal = _bstr_t("PRS");
VARIANT vSev;
vSev.vt = VT_BSTR; //Variant type for BSTR
vSev.bstrVal = _bstr_t("Medium");
VARIANT vMess;
vMess.vt = VT_BSTR; //Variant type for BSTR
vMess.bstrVal = _bstr_t("Coucou ça va bien?");
pCommand->Parameters->Append(pCommand->CreateParameter(_bstr_t("strType"),adVarChar,adParamInput,50,vName));
pCommand->Parameters->Append(pCommand->CreateParameter(_bstr_t("strSeverity"),adVarChar,adParamInput,50,vSev));
pCommand->Parameters->Append(pCommand->CreateParameter(_bstr_t("strMessage"),adVarChar,adParamInput,50,vMess));
Donc dans vName je retrouve la string destinée à vSev etc...
du coup lors de l'execution de la requete SQL je me retrouve avec un peu n'importe quoi dans ma table (SQL server 2005)
quelqu'un saurait me guider sur l'utilisation appropriée des variants (VT_BSTR)?
car si je les utilise pour des entiers ou autre, aucun problème, et si j'utilise seulement un de type VT_BSTR ça marche bien aussi...
merci d'avance.
LaTatadu91
Messages postés967Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 13 mars 2013 à 18:51
j'utilise les variants car j'ai créé une fonction qui prend en arguments des vector
et je créé dynamiquement mes paramètres:
for( int i = 0; i < variantArray.size(); i++ )
{
adType = GetVariantType( variantArray[i] );
pCommand->Parameters->Append( pCommand->CreateParameter( parameters[i].c_str(), adType, adParamInput, sizeArray[i], variantArray[i] ) );
}
LaTatadu91
Messages postés967Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 14 mars 2013 à 09:22
Ok, j'ai lu une doc sur _bstr_t, mon soucis est que j'ai besoin de stocker différents types (int, float, string, bool) voilà pourquoi j'ai choisi les VARIANTS.
Mon petit test en dur marche bien: par contre ça ne compile pas si j'essaye avec des variables string.
genre
string str ="test";
V_BSTR(&vName) = str;
LaTatadu91
Messages postés967Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 16 mars 2013 à 09:02
Quand tu parles de non perfs, c'est à quel niveau? temps d'execution? Mémoire?
Et pour mes requetes SQL , j'utilise l'objet command d'ADO pour executer mes procédures stockées, c'est le mieux non niveau perf?