Avatar billede hyperguy Nybegynder
04. oktober 2007 - 15:05 Der er 8 kommentarer og
1 løsning

Parameters til MySql

Goddag

Jeg har lidt problemer med at få Parameters til at virke i mit C# projekt

Jeg har lavet følgende:

MySqlCommand sqlCmd = new MySqlCommand("UPDATE sms_users SET name=@Para1 WHERE u_id=@Para8  LIMIT 1", this.sqlConn);
sqlCmd.Parameters.Add("@Para1", SqlDbType.VarChar);
sqlCmd.Parameters["@Para1"].Value = sName;
sqlCmd.ExecuteNonQuery();

Jeg har også prøvet med
sqlCmd.Parameters.AddWithValue("@Para1", sName);
uden held.

Jeg har længere oppe min connection og alt det som jeg åbner.


Det her virker, men der kan man lave Sql ballade i det, og det ønsker man jo ik :)
MySqlCommand sqlCmd = new MySqlCommand("UPDATE `sms_users` SET `name` = '" + sName + "' WHERE `u_id` = '" + iUserid + "' LIMIT 1", this.sqlConn);

Problemet ligger i at den ganske enkelt ikke opdater noget og ja der er en række med u_id = 1 :)
Avatar billede arne_v Ekspert
04. oktober 2007 - 15:06 #1
Du skal adde 2 parameters (@Para1 og @Para8).

Og du bør angive en længde til din VARCHAR parameter.
Avatar billede sherlock Nybegynder
04. oktober 2007 - 15:48 #2
Og du skal nok bruge MySqlDbType.??? i stedet for SqlDbType.???
Avatar billede hyperguy Nybegynder
04. oktober 2007 - 15:53 #3
Jeg har den para8 også, glemte bare lige at skrive den med her.
Det med Mysqldbtype kan ære derfor, men det forklare vel ikke hvorfor

sqlCmd.Parameters.AddWithValue("@Para1", sName);
sqlCmd.Parameters.AddWithValue("@Para8", iUserid);

ikke virker så?
Avatar billede hyperguy Nybegynder
04. oktober 2007 - 15:57 #4
Det jeg har nu er følgende:

MySqlCommand sqlCmd = new MySqlCommand("UPDATE sms_users SET name=@Para1 WHERE u_id=@Para8  LIMIT 1", this.sqlConn);
sqlCmd.Parameters.Add("@Para1", MySqlDbType.VarChar,sName.Length);
sqlCmd.Parameters["@Para1"].Value = sName;
sqlCmd.Parameters.Add("@Para8", MySqlDbType.Int64);
sqlCmd.Parameters["@Para8"].Value = iUserid;
sqlCmd.ExecuteNonQuery();

Og det virker stadig ikke :(
Avatar billede sherlock Nybegynder
04. oktober 2007 - 16:01 #5
Jeg undrer mig over "LIMIT 1" ?
Avatar billede arne_v Ekspert
04. oktober 2007 - 16:05 #6
Jeg ville sætte længden til feltets længde ikke værdiens længde.

Er u_id en BIGINT ?

Og ja - hvad laver den LIMIT der ?

Catcher du Exception uden at skrive den ud ??
Avatar billede hyperguy Nybegynder
05. oktober 2007 - 08:08 #7
Nej u_id er en int

Limit er der bare for at være sikker på jeg kun opdater 1 række i sqlen. Kan umuligt være den som laver ballade da.
Avatar billede hyperguy Nybegynder
05. oktober 2007 - 08:11 #8
Der er ingen Exception, har lige tjekket det og der falder ingen Exception.
Avatar billede hyperguy Nybegynder
05. oktober 2007 - 11:35 #9
Det virker nu. Jeg skrev det om fra starten af og så brugte jeg ?name og ?userid i stedet for @Para1/8 og så virkede det. Underligt nok hehe.
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