2009-12-03 3 views
1

J'ai une base de données simple et que vous souhaitez mettre à jour une valeur int. Je fais d'abord une requête et récupère un ResultSet (sql :: ResultSet). Pour chacune des entrées du jeu de résultats, je souhaite modifier une valeur figurant dans une colonne particulière d'une table, puis la réécrire dans la base de données/mettre à jour cette entrée dans cette ligne.Comment puis-je mettre à jour une valeur dans une ligne de MySQL à l'aide du connecteur/C++

Il n'est pas clair pour moi en fonction de la documentation comment faire. Je continue à voir des instructions "Insert" avec des mises à jour - mais je ne pense pas que ce soit ce que je veux - je veux garder la plus grande partie de la ligne de données intacte - juste mettre à jour une colonne.

Quelqu'un peut-il me indiquer quelques exemples de code ou toute autre référence claire/ressource?

EDIT:

Sinon, est-il un moyen de dire la base de données de mettre à jour un domaine particulier (ligne/colonne) pour incrémenter une valeur int par une certaine valeur?

EDIT:

Alors, quelle est la manière typique que les gens utilisent MySQL de C++? Utilisez le C api ou le mysql ++? Je suppose que j'ai choisi le mauvais API ...

+0

Avez-vous essayé quelque chose? Pouvez-vous poster du code? Est-ce que Connector/C++ inclut la notion de curseur que vous pouvez ouvrir "for update"? –

+0

Je n'ai pas de code pour essayer une mise à jour car je n'arrive pas à comprendre comment le faire. Le seul code que j'ai est une requête qui obtient un ensemble de résultats. – Tim

+0

Je suis également capable d'insérer une nouvelle ligne. Ce dont j'ai besoin, c'est d'un moyen de mettre à jour une ligne. – Tim

Répondre

1

d'une analyse rapide des documents, il apparaît connecteur/C++ est une implémentation partielle de l'API Java JDBC pour C++. Je n'ai trouvé aucune référence à des ensembles de résultats pouvant être mis à jour, ce qui pourrait ne pas être possible. Dans Java JDBC, l'interface ResultSet inclut la prise en charge de la mise à jour de la ligne en cours si l'instruction a été créée avec la simultanéité ResultSet.CONCUR_UPDATABLE.

Vous devriez vérifier si connecteur/C++ prend en charge resultsets actualisables.

EDIT: Pour mettre à jour une ligne que vous aurez besoin d'utiliser une méthode PreparedStatement contenant un UPDATE SQL, puis executeUpdate() de la déclaration. Avec cette approche, vous devez identifier l'enregistrement à mettre à jour avec une clause WHERE. Par exemple

update users set userName='John Doe' where userID=? 

Ensuite, vous créez un PreparedStatement, définissez la valeur du paramètre, puis executeUpdate().

+0

Y at-il un moyen de faire une mise à jour sur une ligne puis avec Connector/C++? (Indépendamment de l'utilisation d'un ensemble de résultats?) – Tim

+1

J'ai modifié la réponse pour inclure une description de la mise à jour en général. –

+0

Excellent, merci. – Tim

Questions connexes