OleDB выбор нескольких CSV-файлов с первой строкой в качестве имен полей в C#

#c# #csv #oledb

#c# #csv — файл #oledb #csv

Вопрос:

Итак, в настоящее время мой код выглядит следующим образом, и все это прекрасно

 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
  

Тем не менее, из того, что я вижу, почти все примеры в Интернете не показывают ничего, кроме select * , и я бы хотел, чтобы моя datagrid отображала заголовки в качестве выбранных имен полей, а не F1, F2….

Реализовано ли это где-нибудь?

Комментарии:

1. Я скопировал и вставил чужой код, мне нужно было убрать = Нет в HDR = Нет

Ответ №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 в строке подключения указывает, содержит ли первая строка имена столбцов.

Комментарии:

1. Спасибо, я только что понял это, немного повозившись.