Bonjour
J'ai suivi le tuto sur http://vicenzo.developpez.com/tutoriels/c/ocilib/ et bien regardé le programe de test fourni avec OCILIB. Mais je me pose une question sur le BIND de parametres.
Si je comprends bien cet exemple, la fonction OCI_BindInt va faire un "remplacement" de ":code" par la valeur de l'int code quand on fera OCI_Execute.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 OCI_Prepare(st, "delete from test_fetch where code = :code"); OCI_BindInt(st, ":code", &code); code = 3; OCI_Execute(st);
Mais dans le cas de la fonction OCI_BindString, je pensais pouvoir faire :avec loginStr est un std:string. Mais la fonction OCI_BindString attend un char* et non un const char*. Je ne comprend pas trop pourquoi. Dans le cas ou on doit "binder" une std::string, faut-il a chaque fois passer par faire une copie dans un buffer (pour avoir un char*) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 OCI_Prepare(st, MT("SELECT idUser, password FROM SOUser WHERE login=:login AND deleted = 0")); OCI_BindString(st, MT(":login"), loginStr.c_str(), loginStr.length()); OCI_Resultset *rs =OCI_GetResultset(st); if (OCI_FetchNext(rs)) { ..
A bientot
Partager