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
Der frühe Apfel fängt den Wurm.
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
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 !
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
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 !
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
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.