定义OleDbCommand返回类型

时间:2017-06-05 14:40:59

标签: c# oledbcommand

我正在使用下面的OleDbCommand多次读取文件方法。我遇到的问题是,大部分时间它将数据类型作为字符串返回,但偶尔(取决于正在读取的数据)返回的int类型。有没有办法请求所有列返回为字符串,而不必在加载后转换所有列?

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;
        }
    }

1 个答案:

答案 0 :(得分:0)

如果需要使用OleDbCommand执行此操作,那么您可以使用OleDbDataReader代替DataTable,并使用GetObject读取每个值。< / p>

然后,您可以在任何值上调用ToString()

但是如果你有一个包含无类型数据的CSV文件,那么一次只读取一行文件并拆分值可能要容易得多,创建一个List<string[]>

This answer显示了读取.csv并拆分每一行的最简单方法。

This answer显示了如果值包含引号内的逗号分隔值,例如this,are,separate,"this,is,one"

,则会显示如何执行此操作