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 fra Infor
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.