【问题标题】:OleDB selecting multiple CSVs with first row as field names in C#OleDB在C#中选择第一行作为字段名称的多个CSV
【发布时间】:2011-04-12 18:11:27
【问题描述】:

所以我的代码目前看起来像这样,一切都很好

String q = "SELECT * FROM "+"test.csv";
        try
        {
            OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\;Extended Properties=\"Text;HDR=No;FMT=Delimited\"");
            OleDbDataAdapter da = new OleDbDataAdapter();
            DataSet ds = new DataSet();
            OleDbCommand cd = new OleDbCommand(q, cn);
            cn.Open();
            da.SelectCommand = cd;
            ds.Clear();
            da.Fill(ds, "CSV");
            dataGridView1.DataSource = ds.Tables[0];
            cn.Close();
            }
        catch (Exception ex)
        {
            MessageBox.Show("There was an issue: " + ex.Message);
        }

但是,我想在我的 CSV 中取第一行并将其用作字段名称,所以我可以执行类似的操作

"select a.ID, a.SOMETHING_ELSE from test.csv a"
where the CSV looks something like
ID,SOMETHING_ELSE,DONT_WANT_THIS
1,blah,I don't want to see this

然而,据我所见,网络上的所有示例都只显示选择 *,我希望我的数据网格将标题显示为选定的字段名称,而不是 F1、F2....

这是在任何地方实现的吗?

【问题讨论】:

  • 我复制粘贴了别人的代码,需要在HDR=No上去掉=No

标签: c# csv oledb


【解决方案1】:

更改您的连接字符串以包含 HDR=Yes(而不是 HDR=No):

OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\;Extended Properties=\"Text;HDR=Yes;FMT=Delimited\"");

对于 OleDB,连接字符串中的 HDR 属性指示第一行是否包含列名。

【讨论】:

  • 谢谢,我只是通过更多搜索才知道这一点。
猜你喜欢
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
  • 2020-12-20
  • 1970-01-01
  • 2017-03-03
  • 1970-01-01
  • 1970-01-01
  • 2021-06-20
相关资源
最近更新 更多