STRING für LOAD DATA INFILE modifizieren?

Deletemaster

Erfahrenes Mitglied
stimmt,
das würde local zwar funktionieren aber beim zugriff auf einem server nicht mehr
ich nehme erstmal die einfache variante ;)
Danke
 

Deletemaster

Erfahrenes Mitglied
Irgendwie funktioniert meine Replace nicht...
Denkfehler?
Es sollen alle einfachen Backslash durch doppelte ersetzt werden
OpenFileDialog _ofd = new OpenFileDialog();
_ofd.ShowDialog();

Code:
string str_import;
str_import = _ofd.FileName;

for (int i = 0; i < str_import.Length; i++)
{
str_import.Replace("\","\\"); //Hier erschein Syntaxfehler ?
}
 

Deletemaster

Erfahrenes Mitglied
Syntaxfehler gefunden:

OpenFileDialog _ofd = new OpenFileDialog();
_ofd.ShowDialog();

string str_import;
str_import = _ofd.FileName;

for (int i = 0; i < str_import.Length; i++)
{
str_import.Replace("\\", "\\\\");
}
MessageBox.Show(str_import);

Ich lasse mir nun den string in der MSG anzeigen
allerdings sieht dieser immer noch so (G:\test.txt) aus
warum wurde dieser nicht verändert?
 

Norbert Eder

Erfahrenes Mitglied
Er wurde verändert. Nur die MessageBox zeigt den Pfad so an, wie du als User es auch verstehst .. mit einfachem Backslash.

Wieso probierst nicht einfach aus ein File zu öffnen? Wenn der Filename nicht passt, bekommst eh eine Fehlermeldung. Ein bisserl selbst probieren.

Btw.: Lass es dir in der Console ausgeben, dann solltest doppelte Backslashes haben bzw. schau dir die Werte mit der Schnellüberwachung an. Dann siehst auch was in der Tat drinnen steht. Oder probiers mit Breakpoints und schaus dir dann im LocalViewer an ...
 

Deletemaster

Erfahrenes Mitglied
Also in der Schnellüberwachung wird der string unverändert angezeigt:
str_import = @"G:test.txt"
Inhalt von str_import = "G:\test.txt"

warum wurde der string nicht verändert?
habe jetzt die zu ladene Datei versuchsweise mal hart in den Code geschrieben
die daten werden trotzdem nicht in die table geladen
Wo liegt hier denn der Fehler?
OdbcCommand _ins_cmd = new OdbcCommand(
"LOAD DATA INFILE 'G:\\test.txt' INTO TABLE _import", odbcConnection1);

über die Console in mysql sieht der Befehl so aus:

load data infile 'G:\\test.txt' into table _import;
und das funktioniert aber leider nur so...
 

Deletemaster

Erfahrenes Mitglied
Geöffnet wird die Datei jedoch nicht
Code:
OpenFileDialog _ofd = new OpenFileDialog();
_ofd.ShowDialog();

_ofd.OpenFile();
 

Norbert Eder

Erfahrenes Mitglied
Vermutlich hast du
Code:
myString.Replace("\\","\\\\");
gemacht und nicht
Code:
myString = myString.Replace("\\","\\\\");
 

Deletemaster

Erfahrenes Mitglied
Jetzt habe ich folgende Fehlermeldung bekommen:

Unbehandelte Ausnahme vom Typ System.OutOfMemoryException

Hier nochmal mein Code:

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;

for (int i = 0; i < str_import.Length; i++)
	{
	str_import = str_import.Replace("\\", "\\\\");
	}

	try
	{
	odbcConnection1.Open();

	OdbcCommand _ins_cmd = new OdbcCommand(
"LOAD DATA INFILE  " + " str_import " + " INTO TABLE _import", odbcConnection1);
				
	_ins_cmd.ExecuteNonQuery();
	odbcConnection1.Close();
	}
	catch(Exception ex)
	{
	MessageBox.Show(ex.Message);
	odbcConnection1.Close();
	}
	odbcConnection1.Close();
}