[OCILIB] Liaison de strings
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.
Code:
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); |
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.
Mais dans le cas de la fonction OCI_BindString, je pensais pouvoir faire :
Code:
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)) {
.. |
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*) ?
A bientot