J'ai une table simple appelée mytable2 avec une seule colonne, nom comme varchar2 (20). J'ai maintenant une liste de noms stockés comme vecteur de std :: string à insérer dans la table. Je veux utiliser executeArrayUpdate, donc je dois d'abord faire le setDataBuffer. Cependant, comme je pouvais le voir, les gens utilisent toujours char [] [20] pour définir le tampon de données. Cela me laisse un grand mal de tête, car j'ai deux problèmes ici, d'abord est de convertir de vecteur en tableau, la seconde est de convertir la chaîne en char. 1er, j'ai fatigué d'utiliser le vecteur de char [20], et cela ne compile pas. Googled et ils disent que le vecteur ne peut pas prendre char [], j'ai donc changé mon vecteur de std :: string en vector de char *. Deuxièmement, j'ai essayé d'arrêter le vecteur en utilisant "void * p = & names [0]", car certaines personnes disent de cette façon que nous pouvons utiliser des vecteurs comme tableau. J'ai utilisé stmt-> setDataBuffer (1, mystring, OCCI_SQLT_STR, 20, NULL), et le programme compilé et exécuté bien, mais quand je "sélectionne le nom de mytable2", il a montré seulement quelques charaters étranges.Comment utiliser le vecteur <string> dans OCCI setDataBuffer?
Quelqu'un a déjà eu un problème similaire auparavant? que devrais-je faire?
Mon code est simple comme ci-dessous:
count=2;
vector<char*> mystring;
for(int i=0;i<count;i++)
{
char my[20];
strcpy_s(my,"Michael");
mystring.insert(mystring.end(),my);
}
stmt->setDataBuffer(1,&mystring[0],OCCI_SQLT_STR,20,NULL);
stmt->setBatchErrorMode (true);
stmt->executeArrayUpdate(count);
Merci beaucoup pour votre réponse. – Michael
Merci beaucoup pour votre réponse. J'allais envelopper les fonctions OCCI pour interroger l'insertion, la suppression, la mise à jour d'une table (n'importe quelle table), de sorte que tout ce que je dois donner est les noms de champs et les valeurs, puis le programme devrait lire automatiquement le schéma et insérez dans Oracle. J'avais l'habitude de le faire dans OPN.Net, mais je veux que mon programme soit performant et j'écris à nouveau en C++, y compris les algorithmes, bases de données, webservices, etc. Je pense que je devrais écrire une fonction pour convertir ces vecteurs à quelque chose comme char **? –
Michael
Oui. Vous pourriez probablement vous rendre la vie plus facile en faisant en sorte que votre fonction de conversion fasse aussi l'appel à OCCI. Avant de commencer tout cela, je voudrais savoir que réimplémenter tout en C++ rendrait les choses plus rapides. Vous avez besoin d'un moyen d'analyser les goulets d'étranglement dans votre code .Net existant. – wreckgar23