Dateipath in Datenbank speichern

09/06/2008 - 17:54 von Paul Baumgart | Report spam
Hallo NG.

Ich bin Neueinsteiger in C# und versuche verzweifelt einen Dateipath in
ein Memofeld zu speichern, dabei habe ich zwei Verstàndnissprobleme.

1) Warum zeigt C# bei Pathangaben bei "\" immer "\\" an?
2) Wie kann es passieren, dass ein SQLStatement: "insert tblTest
(Pathname) value ('Z:\\data\\lala.csv')" in der in der Datenbank dann
wie folgt aussieht "Z:datalala.csv" ?

Ich benutz als Datenbanksystem mySQL und habe mir auch gleich eine
kleine Klasse dazu geschrieben.

<code>
strSQL=@"insert tblTest (Pathname) value ('Z:\\data\\lala.csv');"
cDB.getRS(strSQL.ToString());
</code>


<code "cDB->getRS">
public DataTable getRS(string strSQL)
{
DataSet ds = getDS(strSQL);
if (ds.Tables.Count > 0)
{
DataTable dt = ds.Tables[0];
return dt;
}
else
{
return null;
}
}

<code "cDB->getDS">
public DataSet getDS(string strSQL)
{
MySqlConnection con = getConnection();
MySqlDataAdapter da = new MySqlDataAdapter();
DataSet ds = new DataSet();

da.SelectCommand = new MySqlCommand(strSQL, con);
da.Fill(ds);

return ds;
}
</code>

Ich bin Dankbar für jede Hilfe. Grüße aus Frankfurt
 

Lesen sie die antworten

#1 Christof Rueß
09/06/2008 - 18:32 | Warnen spam
Hallo Paul,

Ich bin Neueinsteiger in C# und versuche verzweifelt einen Dateipath in
ein Memofeld zu speichern, dabei habe ich zwei Verstàndnissprobleme.

1) Warum zeigt C# bei Pathangaben bei "\" immer "\\" an?



\ muss escaped werden, da du mit \ auch Steuerzeichen ansprechen kannst
(z.B. für Carrier Return)
Ein \\ steht also für \ in "Klarschrift". Um die \\ bei festen Angaben zu
vermeiden, kannst du einen String wie folgt zuweisen:

string foo = @"C:\bar\baz.qux";

2) Wie kann es passieren, dass ein SQLStatement: "insert tblTest
(Pathname) value ('Z:\\data\\lala.csv')" in der in der Datenbank dann wie
folgt aussieht "Z:datalala.csv" ?



Ich weiß zwar nicht genau, aber soweit ich das sehen kann, wird das \\ von
C# interpretiert, MySQL erwartet aber selbst ein \\.
Um ein \ zu schreiben, musst du ein \\\\ übergeben.

Googlefutter: C# MySQL Escape

HTH

Chris

PS: Denk an Escaping, wenn du Usereingaben an die DB übergibst!
http://www.hobbyelektronik.org
Achtung: Die E-Mail-Adresse im From: ist ungültig
Verwendet chris at hobbyelektronik punkt org

Ähnliche fragen