c# - OleDB 选择多个 CSV,第一行作为 C# 中的字段名称

标签 c# csv oledb

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

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....

这是否在任何地方实现?

最佳答案

更改您的连接字符串以包含 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 属性指示第一行是否包含列名。

关于c# - OleDB 选择多个 CSV,第一行作为 C# 中的字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5639699/

相关文章:

asp.net - 城市 zip 和州表的最佳数据库设计

c# - 两个问号一起表示在 C# 中只接受 null 而不是空白 为什么?

c# - BinaryWriter 用于 64 位文件替代品?

c++ - 从大尺寸的 .csv 文件转换为二维数组

python - 在行中填充数据框中的无值 Pandas Python

C# Oledb like 语句不返回任何结果

c# - 我应该将什么传递给 SQLitePCL.raw.SetProvider() 以避免 "The type initializer for ' Microsoft.Data.Sqlite.SqliteConnection' 引发异常”

c# - 当服务器具有有效的 SSL 证书时,将 WebClient.UploadFile() 与 "Handshake failed...unexpected packet format"一起使用时获取 "https"

python - pandas read_csv 删除空白行

c# - 无法通过 OleDbAdapter 更新 Access 数据库