13. februar 2010 - 16:03
Der er
13 kommentarer og 1 løsning
Gemme filnavn i mysql database felt
Hej Eksperter. Jeg har en textbox i en winform der indeholder c:\test\test.jpg. Gemmer jeg det i en mysql tabel forsvinder mine "\" har prøvet at lave en string.replace(@"\","\\") på indholdet af textboksen og kan under debug se at string indeholder 2 \\ men i databasen er de forvundet. Database feltet er af typen VARCHAR(255) Plz help
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
13. februar 2010 - 16:36
#2
14. februar 2010 - 13:42
#3
Tak for råd og fin artikel arne. Jeg har ellers gjort som i sagde og det virker fint i min INSERT funktion men ikke på update. her er koden. Kan i se hvad der er galt MySqlConnection myConn = new MySqlConnection(Properties.Settings.Default.MySqlConnection); MySqlCommand cmd = new MySqlCommand("UPDATE ithemtable SET PicturePath='" + @strPicturePath + "' WHERE ID = '" + ID + "'", myConn); MySqlDataAdapter myDA = new MySqlDataAdapter(cmd); myConn.Open(); cmd.Parameters.Add("@PicturePath", MySqlDbType.VarChar); cmd.Parameters["@PicturePath"].Value = strPicturePath; cmd.ExecuteNonQuery(); myConn.Close();
14. februar 2010 - 14:26
#4
Der skal ikke '' omkring parametre
14. februar 2010 - 14:42
#5
DEt forstår jeg ikke. DEt har du da selv i din artikel. Eller misforstår jeg noget! Er det i denne linje du mener? cmd.Parameters.Add("@PicturePath", MySqlDbType.VarChar);
14. februar 2010 - 14:48
#6
Nej. MySqlCommand cmd = new MySqlCommand("UPDATE ithemtable SET PicturePath='" + @strPicturePath + "' WHERE ID = '" + ID + "'", myConn); -> MySqlCommand cmd = new MySqlCommand("UPDATE ithemtable SET PicturePath=@strPicturePath WHERE ID = '" + ID + "'", myConn);
14. februar 2010 - 14:48
#7
Du må iøvrigt også gerne bruge parameters for ID !
14. februar 2010 - 16:14
#8
Har nu ændret koden til nedenstående uden resultat. Mine "\" forsvinder stadig når jeg bruger UPDATE. ikke ved INSERT MySqlCommand cmd = new MySqlCommand("UPDATE ithemtable SET PicturePath=@strPicturePath WHERE ID = '" + IthemID +"'", myConn); MySqlDataAdapter myDA = new MySqlDataAdapter(cmd); cmd.Parameters.Add("@PicturePath", MySqlDbType.VarChar); cmd.Parameters["@PicturePath"].Value = strPicturePath; myConn.Open(); cmd.ExecuteNonQuery(); myConn.Close();
14. februar 2010 - 21:38
#9
15. februar 2010 - 00:25
#10
Parameters skal haandtere alt med backslash.
15. februar 2010 - 00:26
#11
using System; using System.Data; using MySql.Data.MySqlClient; namespace E { public class Test { public static void Main(string[] args) { using(MySqlConnection con = new MySqlConnection("Database=Test;Data Source=localhost;User Id=;Password=")) { con.Open(); MySqlCommand cre = new MySqlCommand("CREATE TABLE tesc (f1 INTEGER NOT NULL PRIMARY KEY, f2 VARCHAR(50))", con); cre.ExecuteNonQuery(); MySqlCommand ins = new MySqlCommand("INSERT INTO tesc VALUES (?f1,?f2)", con); ins.Parameters.Add("?f1", MySqlDbType.Int32); ins.Parameters.Add("?f2", MySqlDbType.VarChar, 50); ins.Parameters["?f1"].Value = 123; ins.Parameters["?f2"].Value = @"A\B\C"; ins.ExecuteNonQuery(); MySqlCommand sel = new MySqlCommand("SELECT f2 FROM tesc WHERE f1=?f1", con); sel.Parameters.Add("?f1", MySqlDbType.Int32); sel.Parameters["?f1"].Value = 123; Console.WriteLine((string)sel.ExecuteScalar()); MySqlCommand upd = new MySqlCommand("UPDATE tesc SET f2=?f2 WHERE f1=?f1", con); upd.Parameters.Add("?f1", MySqlDbType.Int32); upd.Parameters.Add("?f2", MySqlDbType.VarChar, 50); upd.Parameters["?f1"].Value = 123; upd.Parameters["?f2"].Value = @"A\B\C\D"; upd.ExecuteNonQuery(); Console.WriteLine((string)sel.ExecuteScalar()); MySqlCommand drp = new MySqlCommand("DROP TABLE tesc", con); drp.ExecuteNonQuery(); Console.ReadKey(); } } } } udskriver f.eks. korrekt: A\B\C A\B\C\D hos mig.
01. marts 2010 - 00:59
#12
Klaus?
01. marts 2010 - 08:00
#13
Ja sorry Arne. Fik det aldrig til at virke. Brugte et gammelt trick jeg plejer at bruge til robotter der heller ikke accepterer "\". Lavede replace med 2 * _ _. Ikke kønt men det virker. Tak for hjælpen. nu skal jeg bare finde ud af hvordan jeg lukker og tildeler dig dine point GGG Hilsen Klaus
02. marts 2010 - 02:36
#14
jeg skal først smide et rigtigt svar
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.