Laden...

Odbc und CSV -> bekomme Datei.cvs nicht gefunden (Error 42S02)

Erstellt von Seikilos vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.695 Views
S
Seikilos Themenstarter:in
753 Beiträge seit 2006
vor 13 Jahren
Odbc und CSV -> bekomme Datei.cvs nicht gefunden (Error 42S02)

verwendetes Datenbanksystem: CVS mittels ODBC

Ich hab recht wenig erfahrungen mit ODBC und C# (.net 1.1) und komme da nicht weiter. Folgenden Code hab ich mir zusammengesucht:

Datei liegt in D:\datei.tbl

            string path = @"D:";
            string file = "datei.csv";
            string constr = @"Driver={Microsoft Text Driver (*.txt; *.csv, *.tbl)};Dbq="+path+";Extensions=csv,txt,tbl";
            OdbcConnection con = new OdbcConnection(constr);
            
            OdbcCommand cmd = new OdbcCommand("select * from "+file, odbcConnection);
            cmd.CommandType = CommandType.Text;

            OdbcDataAdapter adapter = new OdbcDataAdapter(cmd);
            adapter.SelectCommand = cmd;
            odbcConnection.Open();
            DataTable dt = new DataTable();
            adapter.Fill(dt);

            dataGrid1.DataSource = dt;

Bei dem Fill krieg ich ne Exception und den Error 42S02, datei.csv konnte nicht gefunden werden.

Tja, nun bin ich ein wenig ratlos.

Edit: Datei in [ ] zu setzen hat es auch nicht gelöst

Life is a short

5.299 Beiträge seit 2008
vor 13 Jahren
  • guckma auf http://www.connectionstrings.com/ , ob der Connectionstring richtig ist.
  • Im Commandstring unterscheidet sich die Endung von der Datei.
  • vlt muß man auch im Commandstring die endung weglassen, und nur den Ordner als "DB" angeben.
  • wobei deine Datei ja nicht in einem ordner ist, sondern auffm laufwerk
  • evtl. kein zugriffsrecht, oder biste als admin unterwegs?

Der frühe Apfel fängt den Wurm.

S
Seikilos Themenstarter:in
753 Beiträge seit 2006
vor 13 Jahren

Mein Connection string war in der Tat falsch, das Problem ist, die Endung der Datei muss explizit .tbl sein,

Ich hab es hiermit versucht:

string connectionString = String.Format("Extensions=txt,csv,tab,asc,tbl;Driver={{Microsoft Text Driver (*.txt; *.csv)}};Dbq={0};", fileInfo.DirectoryName);
            

Also Extensions mit tbl erweitert, dann krieg ich Error 42000. Datei ist schreibgeschützt, aber das ist die gleiche Datei wie vorher, nur umbenannt von datei.csv zu datei.tbl.
Bin Admin und hab volle Rechte aufs Verzeichnis, scheint so, als würde das Teil tbl einfach nicht anerkennen

Life is a short

Z
23 Beiträge seit 2008
vor 13 Jahren

hi!
also du möchtest eine *.csv datei laden und in die datenbank schreiben, so wie ich das verstehe.

das gleiche hatte ich letztes jahr mal gemacht.
mein vorschlag für dich:

-> datei über ein streamreader laden und bearbeiten
(bearbeiten? die datei hält fast immer irgend welche kommentare oder beginnt nicht in spalte a, etc.. das sollte gefiltert werden!)

-> in ein array schreiben und dem dataset zuweisen

dann kannst du es ohne probleme in eine db speichern.

gruß

zipmar

Wer den Sinn des Lebens sucht, findet meistens nicht das was er erwartet !

S
Seikilos Themenstarter:in
753 Beiträge seit 2006
vor 13 Jahren

Ich will es nicht in eine DB laden, ich will ein Programm zur Bearbeitung einer CSV "Datenbank" die eine Endung tbl hat. Odbc / ich hat Probleme damit, eine tbl einzulesen, csv geht, txt geht, tbl geht nicht (obwohl der Extension string tbl umfasst)

Life is a short

Z
23 Beiträge seit 2008
vor 13 Jahren

also csv ist eine abkürzung für "Comma Seperated Values" , trennung durch eine zeichen(; , : etc.)
*.tbl kommt glaub ich vom ms exchange.

bei der *.csv kommst du nicht drum rum den trenner zu filtern in ein string[] und dann
einem dataset / datatable übergeben.

dann kannst du dir es im dataGridView anschauen und bearbeiten.

wieder ins array schreiben und wegspeichern.

dir textdatei wird wahrscheinlich mit "\n" getrennt.
getrennt wird auf jeden fall, sonst wäre die ausgabe ungefähr so im dgv:

JochenMasterAm Waldweg 180000 Mun..... alles in einem feld.

lg

Wer den Sinn des Lebens sucht, findet meistens nicht das was er erwartet !

S
Seikilos Themenstarter:in
753 Beiträge seit 2006
vor 13 Jahren

Kann ich denn einen String oder ein Array oder so als Data Source eines grid views übergeben? Denn ich will es automatisch halten. Lesen, Parsen, Editieren und speichern kann ich alles, aber ich will es nicht manuell machen

Life is a short

S
178 Beiträge seit 2009
vor 13 Jahren

Du kannst es dir einfach machen und diesen Fast CSV Reader hier benutzen:
http://www.codeproject.com/KB/database/CsvReader.aspx

Das Ding ist total schnell und du kriegst die Daten auch als DataSource zurück.
Benutze den auch bei mir in meinem Programm. Einfacher geht's echt nicht.