STRING für LOAD DATA INFILE modifizieren?

Deletemaster

Erfahrenes Mitglied
Hallo zusammen,

In Mysql gibt es die Möglichkeit Daten aus z.B. txt-Dateien zu importieren.
Hierzu benötigt man den Verzeichnisstring in Form von
LOAD DATA INFILE 'D:\\test.txt' INTO TABLE _meine_tabelle;

In C# lade ich mir diesen string unter zuhilfenahme des Objektes OpenFileDialog
in meine String-Variable
allerdings wird hier standardmässig D:\test.txt angezeigt
um die Daten aber über eine GUI zu importieren muss ich diesen string modifizieren
also ich brauche 2 Backslash
wie muss ich diesen String modifizieren um D:\\test.txt zu erhalten.

Danke für Eure Hilfe
 

Norbert Eder

Erfahrenes Mitglied
Wenn du beim OpenFileDialog die Filename-Eigenschaft ausliest ist es unerheblich ob ein Backslash, oder zwei.

Ansonsten kannst du immer noch mit @ arbeiten:
Code:
string filename = @"D:\file1.txt";
 

Deletemaster

Erfahrenes Mitglied
Die MySql-Syntax erfordert aber 2 x den Backslash
und wenn ich den ausgelesenen String weiterverarbeiten will
muss die Pfadangabe mit doppel-Backslash erfolgen.
Sicher habe ich die Möglichkeit die Anzahl der Zeichen im String zu ermitteln,
und die 2. oder 3. Stelle um ein \ zu erweitern
das scheint mir aber sehr umständlich
 

Deletemaster

Erfahrenes Mitglied
Leider funktioniert die Methode:

Code:
private void btn_DS_Import_Click(object sender, System.EventArgs e)
{
OpenFileDialog _ofd = new OpenFileDialog();
	_ofd.ShowDialog();

	string str_import;
	str_import = _ofd.FileName;
			
	try
	{
	odbcConnection1.Open();

	OdbcCommand _ins_cmd = new OdbcCommand(
	"LOAD DATA INFILE '+'str_import' + ' INTO TABLE _import", odbcConnection1);
	odbcConnection1.Close();
	}
	catch(Exception ex)
	{
	MessageBox.Show(ex.Message);
	odbcConnection1.Close();
	}
	odbcConnection1.Close();
}
Nicht.
Ich bekomme aber auch keine Fehlermeldung
 

Nico Graichen

Erfahrenes Mitglied
Hi,

Wo ist denn das Problem die Methode String.Replace() aufzurufen und ersetzt damit "\" durch "\\".

EDIT:
Und beim Verknüpfen von Teilstrings solltest du auch überall " verwenden nicht ' ;)
 

Deletemaster

Erfahrenes Mitglied
Hallo Norbert,
sicher kann ich doch in meinen string (egal welche length)
zwischen dem 2. und 3. Zeichen ein Zeichen einfügen
0 = G
1 = :
2 = \
3 = \
denn der zusätzliche Backslash wird immer an der gleichen Stelle hinzugefügt
egal welche Länge der String hat

Kannst du mir bitte verraten, wie ich dafür vorgehen muss?
Danke
 

Norbert Eder

Erfahrenes Mitglied
Wie gesagt, nimm String.Replace().

Beim Einfügen an der 3. Stelle hast beispielsweise schon ein Problem, wenn das File auf einem Share liegt ...

Beispielsweise:
\\muhserver\filex.txt
 

Nico Graichen

Erfahrenes Mitglied
wie schon geschrieben, mit String.Replace ;)
außderm solltest du das nicht fest für diesen Punkt machen. Was wäre denn, wenn deine Datei in einem Unterverzeichnis liegt ;-]

EDIT:
Gibts in der MSDN nicht genug beispiele für String.Replace() ;)