Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[bug ?] Modifier une requête du SqlCommandBuilder

2 réponses
Avatar
Tamahome
Bonjour,

j'ai un SqlCommandBuilder qui me genere automatiquement ma requete d'update.
Je souhaiterai la modifier a la main. Je fais quelque chose dans ce goût la
:

/*******************************************************/

SqlDataAdapter v_synchro = new SqlDataAdapter("Select * From MaTable",
v_connexion);
SqlCommandBuilder v_builder = new SqlCommandBuilder(v_synchro);

// la j'ai bien ma commande d'update en SQL
string v_updateSQL = v_builder.GetUpdateCommand().CommandText;

//Je veux remplacer le where par le mien
int v_where = v_updateSQL.IndexOf("WHERE");

v_updateSQL = v_updateSQL.Substring(0, v_where) + " WHERE toto = @p1" ;

//et la je ne peux pas le reinjecter dans le builder (y'a pas d'erreur,
mais sa valeur ne change pas) :

v_builder.GetUpdateCommand().CommandText = v_updateSQL ;

/*******************************************************/

Pourtant dans la doc il est bien marqué pour la propriété
"GetUpdateCommand().CommandText " : "obtient ou définit ...."... Pourquoi je
n'arrive donc pas à la définir ??

C'est la doc qui se plante et il n'y a pas de "set" pour cette propriété ou
bien autre chose ?

Merci de m'éclairer, la je nage :)

2 réponses

Avatar
Paul Bacelar
Ce n'est pas un bug, c'est une mauvaise utilisation des API.

cf. MSDN:

"An application can use the GetUpdateCommand method for informational or
troubleshooting purposes because it returns the SqlCommand object to be
executed."



Cette propriété n'est qu'une vue des données internes du
"SqlCommandBuilder".

Si vous êtes capable de générer la clause "Where", utilisez le directement
dans le DataAdapter.

--
Paul Bacelar
Demandeur d'emploi

"Tamahome" wrote in message
news:4136c752$0$6584$
Bonjour,

j'ai un SqlCommandBuilder qui me genere automatiquement ma requete


d'update.
Je souhaiterai la modifier a la main. Je fais quelque chose dans ce goût


la
:

/*******************************************************/

SqlDataAdapter v_synchro = new SqlDataAdapter("Select * From MaTable",
v_connexion);
SqlCommandBuilder v_builder = new SqlCommandBuilder(v_synchro);

// la j'ai bien ma commande d'update en SQL
string v_updateSQL = v_builder.GetUpdateCommand().CommandText;

//Je veux remplacer le where par le mien
int v_where = v_updateSQL.IndexOf("WHERE");

v_updateSQL = v_updateSQL.Substring(0, v_where) + " WHERE toto = @p1" ;

//et la je ne peux pas le reinjecter dans le builder (y'a pas d'erreur,
mais sa valeur ne change pas) :

v_builder.GetUpdateCommand().CommandText = v_updateSQL ;

/*******************************************************/

Pourtant dans la doc il est bien marqué pour la propriété
"GetUpdateCommand().CommandText " : "obtient ou définit ...."... Pourquoi


je
n'arrive donc pas à la définir ??

C'est la doc qui se plante et il n'y a pas de "set" pour cette propriété


ou
bien autre chose ?

Merci de m'éclairer, la je nage :)




Avatar
Tamahome
"Paul Bacelar" a écrit dans le message
de news:
Ce n'est pas un bug, c'est une mauvaise utilisation des API.

cf. MSDN:

"An application can use the GetUpdateCommand method for informational or
troubleshooting purposes because it returns the SqlCommand object to be
executed."



Cette propriété n'est qu'une vue des données internes du
"SqlCommandBuilder".

Si vous êtes capable de générer la clause "Where", utilisez le


directement
dans le DataAdapter.



oui finalement c'est ce que j'ai fait, merci