bonjour, j'ai un petit soucis avec les requêtes sous ADO avec Visual C++ .net sous win XP
voila le principe simple :
je suis connecté en arrivant dans la fonction (sinon les requêtes sont ignorées)
je prépare une requête d'insertion (CString)
je créé un recordset (ADODB::_RecordsetPtr)
je lance ma requete (lancée dans un try catch, qui détruit l'instance précédente s'il y en a une, qui créé une nouvelle instance de recordset et qui lance un rec->Open(_bstr_t(req), connect.GetInterfacePtr(), ADODB::adOpenForwardOnly, ADODB::adLockReadOnly, ADODB::adCmdText); où rec est le recordset et et req la requete)
ensuite je teste le recordset ( if(!rec->adoEOF) ou while (!rec->adoEOF) suivant si j'attend un ou plusieurs résultat. (ici j'utilise if)
je récupère ce qu'il y a à récupérer, et je termine l'instance du recordset
dans le cas d'une requête (un select ou autre), tout marche bien... j'ai jamais eu aucun probleme
mais quand je remplace la requête par un INSERT INTO, ça se gate
En requête simple, ça marche.
mais si je couple :
"INSERT INTO table ( ) VALUES () ; select @@identity as id"
j'ai la requête qui réussit (ma base est bien mise à jour), mais le recordset semble avoir un probleme...
le test IF (rec->adoEOF) génère une exception, et du coup, je peux pas récupérer l'id inséré... alors que sur le serveur lui même avec l'analyseur de requête (ah oui, c du SQL Server :p), tout marche bien...
Y a t il des manipulations particulières lors d'un envoie de plusieurs requêtes ?
Partager