从SQL Server读取 - 需要从CSV读取

Cra*_*aig 2 c# sql datatable

目前,我从SQL serve r(2008)数据库中获取数据.cyurrent方法是使用DataTable,然后传递并使用它.

    if (parameters != null)
    {
        SqlDataAdapter _dataAdapter = new SqlDataAdapter(SqlQuery, CreateFORSConnection());
        foreach (var param in parameters)
        {
            _dataAdapter.SelectCommand.Parameters.AddWithValue(param.Name, param.Value);
        }
        DataTable ExtractedData = new DataTable(TableName);
        _dataAdapter.Fill(ExtractedData);
        return ExtractedData;
    }
    return null;
Run Code Online (Sandbox Code Playgroud)

但是现在,用户已经说过我们也可以从txt文件中获取数据,这些文件与SQL Server中的表具有相同的结构.所以,如果我有一个名为'Customer'的表,那么我有一个带有Customer的csv文件.具有相同的列结构.CSV中的第一行是列名,并匹配我的表.

是否可以将txt文件读入数据表,然后以某种方式在该数据表上运行SELECT?我的大多数查询都是单表查询:

SELECT * FROM Table WHERE Code = 111
Run Code Online (Sandbox Code Playgroud)

但是,有一个案例我会加入.这可能有点棘手,但我可以制定一个计划.如果我可以先将txt文件放到数据表中,我可以使用它.

使用上面的代码,我是否可以不将连接字符串更改为从CSV而不是SQL Server读取?

Sys*_*own 5

首先,您需要将CSV数据读入DataTable.有很多CSV解析器,但由于您更喜欢使用ADO.NET,因此可以使用OleDB客户端.请参阅以下文章.

http://www.switchonthecode.com/tutorials/csharp-tutorial-using-the-built-in-oledb-csv-parser

加入有点困难,因为两组数据都存在于不同的地方.但你可以做的是获得两个DataTables(每个来源一个),然后使用Linq加入它们.

C#中DataTables的内部联接