Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用针对Excel文件运行的多个SELECT查询填充数据集?_C#_.net_Sql_Excel - Fatal编程技术网

C# 如何使用针对Excel文件运行的多个SELECT查询填充数据集?

C# 如何使用针对Excel文件运行的多个SELECT查询填充数据集?,c#,.net,sql,excel,C#,.net,Sql,Excel,我的命令是这样的: string command = "SELECT * FROM [SheetName1$]; SELECT * FROM [SheetName2$]; ...." 当我这样做的时候 DataSet set = new DataSet(); using(OleDbDataAdapter adapter = new OleDbDataAdapter(command, connection)) { adapter.Fill(ds) } 我以一个空数据集

我的命令是这样的:

string command = "SELECT * FROM [SheetName1$]; SELECT * FROM [SheetName2$]; ...."
当我这样做的时候

  DataSet set = new DataSet();
  using(OleDbDataAdapter adapter = new OleDbDataAdapter(command, connection))
  {
     adapter.Fill(ds)
  }

我以一个空数据集结束(更具体地说,我以一个异常结束,该异常表示在SQL语句结束后找到的字符)。但是,如果我只使用一个SELECT查询,则可以正常工作。

可以在SQL查询中尝试此操作:

SELECT * FROM [SheetName1$]
UNION ALL
SELECT * FROM [SheetName2$]

我希望这会有所帮助,因为Excel不能在一条语句中执行多条语句。试着用两个命令来实现这一点

DataSet set1 = new DataSet();
using(OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [SheetName1$];", connection))
{
   adapter.Fill(set1 );
}

DataSet set2 = new DataSet();
using(OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [SheetName2$];", connection))
{
   adapter.Fill(set2);
}

不要填写
DataSet
s,而是填写
DataTable
s,然后将所述
DataTable
s添加到数据集

DataSet ds = new DataSet();

DataTable dt1 = ds.Tables.Add("set1");
using(OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [SheetName1$];", connection))
{
   adapter.Fill(dt1);
}

DataTable dt2 = ds.Tables.Add("set2");
using(OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [SheetName2$];", connection))
{
   adapter.Fill(dt2);
}

不是真的。我需要将数据放在单独的表中