Ich verwende den folgenden OleDbCommand, um von einer Dateimethode mehrere Male zu lesen. Das Problem, das ich habe, besteht darin, dass es die Datentypen meist als Strings zurückgibt, aber gelegentlich (abhängig von den gelesenen Daten) seine zurückkehrenden Int-Typen. Gibt es eine Möglichkeit, alle Spalten als String zurückzugeben, ohne dass alles konvertiert werden muss, sobald es geladen ist?Definieren von OleDbCommand Rückgabetyp
static DataTable GetDataTableFromCsv(string path, bool isFirstRowHeader)
{
string header = isFirstRowHeader ? "Yes" : "No";
string pathOnly = Path.GetDirectoryName(path);
string fileName = Path.GetFileName(path);
string sql = @"SELECT * FROM [" + fileName + "]";
using (OleDbConnection connection = new OleDbConnection(
@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + pathOnly +
";Extended Properties=\"Text;HDR=" + header + "\""))
using (OleDbCommand command = new OleDbCommand(sql, connection))
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
DataTable dataTable = new DataTable();
dataTable.Locale = CultureInfo.CurrentCulture;
adapter.Fill(dataTable);
return dataTable;
}
}
Haben Sie schon von '' LINQ'' gehört nicht Werte begrenzen? Dies ist die Art von Dingen, die Sie in LINQ viel einfacher machen können. – abhi
@abhi Datatable aus Textdatei? Würde ein Beispiel lieben, das gegeben ist, was ich oben habe. – windowskm
Sie benötigen eine Schemadatei. Siehe folgenden Beitrag: https://stackoverflow.com/questions/12259562/how-can-i-create-schema-ini-file-i-need-to-export-my-csv-file-to-datagridview. – jdweng