所以我的代码目前看起来像这样,一切都很好
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 *,我希望我的数据网格显示标题为选择的字段名称,而不是F1,F2 ....
这是在任何地方实施的吗?
答案 0 :(得分:1)
更改您的连接字符串以包含HDR =是(而不是HDR =否):
OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\;Extended Properties=\"Text;HDR=Yes;FMT=Delimited\"");
对于OleDB,连接字符串中的HDR属性指示第一行是否包含列名。