首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义OleDbCommand返回类型

定义OleDbCommand返回类型
EN

Stack Overflow用户
提问于 2017-06-05 14:40:59
回答 1查看 262关注 0票数 0

我使用下面的OleDbCommand多次从文件方法中读取数据。我遇到的问题是,大多数情况下,它将数据类型作为字符串返回,但有时(取决于正在读取的数据)返回int类型。是否有一种方法可以请求所有列作为字符串返回,而不必在加载后转换所有列?

代码语言:javascript
复制
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;
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-05 15:41:59

如果有必要使用OleDbCommand执行此操作,则可以使用OleDbDataReader而不是DataTable,并使用GetObject读取每个值。

然后您可以对任何一个值调用ToString()

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

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

This answer演示了如果值在不分隔值的引号中包含逗号,则如何做到这一点,比如this,are,separate,"this,is,one"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44371472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档