Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Connectionstrings
Oppi35 - Mi 02.02.11 16:40
Titel: Connectionstrings
Hallo Zusammen,
ich habe eine grundsätzliche Frage zu den Connection Strings. Gibt es irgendwo ein Tutorial oder eine Übersicht, was alles in diesen String "rein kann"?
Ich habe das Problem, dass die hier aufgerufene CSV Datei Postleitzahlen enthält, die teilweise vorne eine Null haben, diese aber mit diesem Code nicht eingelesen werden. Nur zur Info. Mir geht es nicht nur um PLZ, daher bitte keine Lösungen bzgl. Formatierung auf 5 Zeichen :)
Ich habe nach langer Zeit den hier verwendeten Connection String gefunden. Mich würde jetzt mal interessieren, was z.B. hinter "Extended Properties" alles steht bzw. was da noch alles stehen kann. Irgendwo kann man doch mit Sicherheit die Formatierung zum Einlesen einstellen. Schließlich bekomme ich über Excel auch per OLEDB die führenden Nullen.
Ich hatte gehofft auf der MSDN Homepage etwas zu finden, aber eine vollständige Übersicht, wie es mit Membern einer Klasse i.d.R. ist, konnte ich nicht finden.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67:
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.OleDb; using System.IO; using System.Data;
namespace OleDB { class Program { static void Main(string[] args) { DataTable dt = ImportCSVData(@"C:\test.csv"); foreach (DataColumn col in dt.Columns) { Console.WriteLine("\n"); foreach (DataRow row in dt.Rows) { Console.Write(row[col].ToString()+" "); }
} Console.Read();
}
private static DataTable ImportCSVData(string strCSVFile) {
DataTable dt = new DataTable(); string strCSVFilePath = Path.GetDirectoryName(strCSVFile); string strCSVFileName = Path.GetFileName(strCSVFile); OleDbConnection conn = null; try { string strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strCSVFilePath + ";Extended Properties='text;HDR=Yes;FMT=Delimited(;)';"; string sql_select; conn = new OleDbConnection(strConnString.Trim()); sql_select = "select * from [" + strCSVFileName + "]"; conn.Open(); OleDbCommand cmd = new OleDbCommand(sql_select, conn); OleDbDataAdapter obj_oledb_da = new OleDbDataAdapter(cmd);
obj_oledb_da.Fill(dt);
} finally { if (conn.State == System.Data.ConnectionState.Open) conn.Close(); } return dt; }
} } |
Gruß Frank
stendate - Mi 02.02.11 21:48
Verusuch mal:
C#-Quelltext
1:
| strConString += "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strCSVFolderName + ";Extended Properties=\"text;\""; |
Wenn das nicht reicht, dann kann man noch im Verzeichnis in dem die Quell-CSV-Datei liegt eine Schema.ini [1] erstellen.
Damit kann man dann noch genauer spezifizieren wie die CSV-Daten behandelt werden sollen, z.B.:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| [MeineCSVDatei.csv] ColNameHeader=True CharacterSet=ANSI Format=Delimited(;) Col1="Foo" Text Col2="PLZ" Text Col3="Bar" Double |
[1]
http://msdn.microsoft.com/en-us/library/ms709353%28v=vs.85%29.aspx
Oppi35 - Do 03.02.11 13:11
Genau diese Infos habe ich gesucht.
Vielen Dank für Eure Hilfe.
Gruß Frank
Ivy - Fr 18.11.11 12:55
hey,
ich hab ne frage zu dem code snippet zum thema excelconnection:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| String strConn = @"Dsn=Excel Files;dbq="+oFD.FileName+";defaultdir=C:\\;driverid=1046;maxbuffersize=2048;pagetimeout=5"; OdbcConnection objConn = new OdbcConnection(strConn); objConn.Open(); OdbcDataAdapter adp = new OdbcDataAdapter("select * from [Sheet1$]", objConn); DataSet ds = new DataSet(); adp.Fill(ds); dataGridView1.DataSource = ds.Tables[0]; objConn.Close(); |
Und zwar wird das ja jetzt in eine datatgridview ausgegeben. Ich möchte die daten aber in einem sting speichern. Jedoch steht in dem String bei mir immer nur "Table" drin und nicht meine eigentlichen daten.
Was mache ich hier falsch?
C#-Quelltext
1:
| string datasource = ds.Tables[0].ToString(); |
Ivy - Mo 21.11.11 10:47
keiner idee wie ich das lösen könnte? :-(
Th69 - Mo 21.11.11 13:23
Hallo Ivy,
um an die Daten der Tabelle zu kommen, mußt du die einzelnen Zellen abfragen (d.h. alle Spalten und Zeilen durchgehen). Stichworte: DataTable.Rows, DataTable.Columns, DataRow.Item (Indexer).
Ivy - Mo 21.11.11 14:52
also nicht über das DAtaSet sondern über eine DataTable abfragen??? oder wie?
C#-Quelltext
1: 2: 3:
| DataTable dt = new DataTable(); adp.Fill(dt); string datasource = dt.Rows[0].ToString(); |
hab jetzt so aber es wird "System.Data.DataRow" ausgegeben
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!