Avatar billede ibleif Nybegynder
09. november 2004 - 21:10 Der er 6 kommentarer og
1 løsning

MySqlCommand, Update og parametre

Hej alle...

Så er den gal igen... :p

Jeg har problemer med at opdatere et datofelt (datetime) i min MySQL database (4.1.7) via et MySqlCommand objekt.

Dette simple stykke virker fint:
c.CommandText = "UPDATE A SET B = '" & Global.GetMySQLDateTime(DateTime.Now) & "'"


- men, hvis jeg vil gøre det igennem parametre således:
c.CommandText = "Update A SET B = @C"
c.Parameters.Add("@C", MySqlDbType.Datetime).Value = Global.GetMySQLDateTime(DateTime.Now)

Så sker der faktisk det, at den sletter indholdet af feltet B ... altså det bliver til [NULL] .. Det fatter jeg ikke?

- Hvordan skal man sætte værdien på den parameter?

På forhånd tak

// Ibleif
Avatar billede jepsen999 Nybegynder
09. november 2004 - 21:23 #1
Argh, jeg har selv haft en del bøvl med parametre og mysql (specielt med datetime).
Er det bytefx du bruger?
Prøv med
c.Parameters.Add("@C", MySqlDbType.Datetime).Value = DateTime.Now.ToString("s");
Avatar billede ibleif Nybegynder
09. november 2004 - 21:28 #2
Der sker desværre intet anderledes...

Nogen andre ideer? Er ved at være lidt desperat! :p

// Ibleif
Avatar billede ibleif Nybegynder
09. november 2004 - 21:30 #3
.. og ja! Jeg bruger "MySQL Connector/Net" - som vist er det tidligere ByteFX..

// Ibleif
Avatar billede ibleif Nybegynder
09. november 2004 - 21:42 #4
hmmm... Jeg tror sq at jeg har fået det til at virke..

Ved at udskrifte "@" med et "?" - og så fodre den med et DateTime

c.CommandText = "Update A SET B = ?C"
c.Parameters.Add("?C", MySqlDbType.Datetime).Value = DateTime.Now

Weird?

// Ibleif
Avatar billede jepsen999 Nybegynder
09. november 2004 - 21:51 #5
Hmm, jeg har ikke kunne fremkalde fejlen, heller ikke uden ToString("s"). Havde ellers bøvl med det et par dage...

En af de ting jeg opdagede i bytefx-kildekoden var at parametername propertyen på command-objektet fjerner det første @ når man sætter parametername. Det kan være det er derfor det virker med "?". Men stadig mærkeligt jeg ikke kan få fejlen frem igen.

Nåmen du kom videre, så... ;)
Avatar billede jepsen999 Nybegynder
09. november 2004 - 21:56 #6
Andre iøvrigt også har haft problemet
http://bugs.mysql.com/bug.php?id=5819
- og fundet løsningen...
Avatar billede ibleif Nybegynder
09. november 2004 - 22:06 #7
Til andre der læser dette, så er det fordi at @ foran noget i MySql jo angiver et variabel-navn! Derfor virker det fint når man skriver @et-eller-andet, og hvis variablen ikke indeholder noget, så vil det blive NULL - logisk nok når man ser det bagefter! :p

// Ibleif
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester