tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
23
ZUGRIFFE
1592
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Deletemaster
    Deletemaster Deletemaster ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Berlin
    Beiträge
    269
    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
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    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";
     

  3. #3
    Avatar von Deletemaster
    Deletemaster Deletemaster ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Berlin
    Beiträge
    269
    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
     

  4. #4
    Avatar von Deletemaster
    Deletemaster Deletemaster ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Berlin
    Beiträge
    269
    Leider funktioniert die Methode:

    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();
    }
    Nicht.
    Ich bekomme aber auch keine Fehlermeldung
     

  5. #5
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Wie wärs mit String.Replace?
     

  6. #6
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    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 Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  7. #7
    Avatar von Deletemaster
    Deletemaster Deletemaster ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Berlin
    Beiträge
    269
    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
     

  8. #8
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    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
     

  9. #9
    Avatar von Deletemaster
    Deletemaster Deletemaster ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Berlin
    Beiträge
    269
    sorry habe geschrieben während ihr geantwortet habt.
    Könnt ihr mir für diese 4 Zeilen ein Beispiel geben
    Danke
     

  10. #10
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    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 Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  11. #11
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Schau dir einfach die Methode Replace() der Klasse String in der MSDN an, da sind auch Beispiele drinnen.
     

  12. #12
    Avatar von Deletemaster
    Deletemaster Deletemaster ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Berlin
    Beiträge
    269
    stimmt,
    das würde local zwar funktionieren aber beim zugriff auf einem server nicht mehr
    ich nehme erstmal die einfache variante
    Danke
     

  13. #13
    Avatar von Deletemaster
    Deletemaster Deletemaster ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Berlin
    Beiträge
    269
    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 ?
    }
     

  14. #14
    Avatar von Deletemaster
    Deletemaster Deletemaster ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Berlin
    Beiträge
    269
    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?
     

  15. #15
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    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

  1. LOAD DATA INFILE Problem
    Von Boof im Forum PHP
    Antworten: 3
    Letzter Beitrag: 18.01.11, 11:51
  2. load data local infile
    Von al-Maghribi im Forum Relationale Datenbanksysteme
    Antworten: 9
    Letzter Beitrag: 09.04.08, 16:17
  3. Load Data Infile & csv upload
    Von südpol im Forum PHP
    Antworten: 1
    Letzter Beitrag: 15.06.07, 13:21
  4. MySQL Load Data Infile
    Von JensG im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 25.11.05, 11:27
  5. LOAD DATA INFILE mit REGEXP möglich?
    Von Terje im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 20.08.04, 19:23