FillSchema et Parameters incompatible ? [C#] [RESOLU] - C#/.NET managed - Programmation
Marsh Posté le 13-07-2006 à 11:40:39
Voici un exemple simple de ce qui déconne :
http://magicsite.manga-torii.com/test.aspx
Le "case 1", c'est la consultation d'une table (select * from test where 1 = 1), et mise en gras des champs faisant partie de la PK.
Le "case 2", c'est rigoureusement la même chose, mise à part que la requête contient un paramètre (select * from test where @test = 1 avec @test = 1). Plus d'information de PK.
De la même façon, si je met un object command dans les "da2.InsertCommand" et autres, ça plantera, alors que pour le da1, je n'ai pas de problème... Moi ça ne me va pas du tout cette histoire
Code :
|
Marsh Posté le 13-07-2006 à 14:26:58
Solution temporaire ici :
http://forum.hardware.fr/forum2.ph [...] 0#t1406351
Mais c'est vraiment gore
Marsh Posté le 13-07-2006 à 16:12:34
Un début de "vraie solution" (merci Fred)
Citation : |
Ce qui fonctionne en effet.
SAUF que je ne peux toujours pas faire de update(), donc c'est cool, j'ai la PK pour retrouver les lignes à modifier, mais une fois que je les ai modifiée, je plante comme un âne à l'enregistrement
Tiens, je viens d'avoir une idée... I'll be back
Marsh Posté le 13-07-2006 à 16:23:54
J'AI TROUVE !!!!!
Je suis un génie, un dieu, un un un, y'a pas de mot pour décrire ma grandeur intellectuelle
(sisi c'est vrai, faut bien s'envoyer des fleurs de temps en temps, personnes le fait jamais sinon )
Donc, la démarche, en reprenant la méthode de Fred :
=> je crée DEUX sqldataadapter et deux datatable avec le schema (et pas de données, grâce à une clause bidon "where null is not null" )
=> je rajoute dans le premier mes données
=> je fais mes modifs dans le premier
=> je crée mes commandes d'insertion, suppression, ajout dans le second
=> je recopie mes données modifiées dans mon second
=> je lance l'update
et ça marche !!!
tout ça pour contourner un bug de merde dans le framework... merci microsoft
Marsh Posté le 13-07-2006 à 01:38:20
J'ai un problème...
Je fais un select que je récupère dans un DataTable
J'ai besoin de connaître la clé primaire qui se cache derrière la requête, car je vais devoir faire des mises à jour dedans.
FillSchema me donne cette info sans problème, et aussi je peux me servir de CommandBuilder pour créer les commandes d'insertion, suppression et mise à jour.
Seulement, dès que me requête a un paramètre (sans toucher au reste de la requête), FillSchema ne rapporte plus de clé, et le sqlDataAdapter n'accepte plus les commandes d'insertion etc.
J'ai raté un truc ou y'a un bug dans ADO.NET ?
PS : .NET 2.0 (C#), SQL Server 2005 Express, sqlClient
Message édité par Arjuna le 13-07-2006 à 16:26:31