ERLEDIGT
JA
JA
ANTWORTEN
23
23
ZUGRIFFE
1592
1592
EMPFEHLEN
-
08.01.06 12:57 #1
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
-
Wenn du beim OpenFileDialog die Filename-Eigenschaft ausliest ist es unerheblich ob ein Backslash, oder zwei.
Ansonsten kannst du immer noch mit @ arbeiten:
Code :1
string filename = @"D:\file1.txt";
-
08.01.06 13:50 #3
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
-
08.01.06 14:04 #4
Leider funktioniert die Methode:
Nicht.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
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(); }
Ich bekomme aber auch keine Fehlermeldung
-
Wie wärs mit String.Replace?
-
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 '
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
08.01.06 14:46 #7
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
-
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
-
08.01.06 14:48 #9
sorry habe geschrieben während ihr geantwortet habt.
Könnt ihr mir für diese 4 Zeilen ein Beispiel geben
Danke
-
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()
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Schau dir einfach die Methode Replace() der Klasse String in der MSDN an, da sind auch Beispiele drinnen.
-
08.01.06 14:51 #12
stimmt,
das würde local zwar funktionieren aber beim zugriff auf einem server nicht mehr
ich nehme erstmal die einfache variante
Danke
-
08.01.06 15:08 #13
Irgendwie funktioniert meine Replace nicht...
Denkfehler?
Es sollen alle einfachen Backslash durch doppelte ersetzt werden
OpenFileDialog _ofd = new OpenFileDialog();
_ofd.ShowDialog();
Code :1 2 3 4 5 6 7
string str_import; str_import = _ofd.FileName; for (int i = 0; i < str_import.Length; i++) { str_import.Replace("\","\\"); //Hier erschein Syntaxfehler ? }
-
08.01.06 15:40 #14
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?
-
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 ...
Ähnliche Themen
-
LOAD DATA INFILE Problem
Von Boof im Forum PHPAntworten: 3Letzter Beitrag: 18.01.11, 11:51 -
load data local infile
Von al-Maghribi im Forum Relationale DatenbanksystemeAntworten: 9Letzter Beitrag: 09.04.08, 16:17 -
Load Data Infile & csv upload
Von südpol im Forum PHPAntworten: 1Letzter Beitrag: 15.06.07, 13:21 -
MySQL Load Data Infile
Von JensG im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 25.11.05, 11:27 -
LOAD DATA INFILE mit REGEXP möglich?
Von Terje im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 20.08.04, 19:23





Zitieren

Login





