0

我的命令是这样的:

string command = "SELECT * FROM [SheetName1$]; SELECT * FROM [SheetName2$]; ...."

当我做

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

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

4

3 回答 3

1

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);
}
于 2012-08-22T16:09:07.633 回答
1

不是填充DataSets,而是填充DataTables,然后将所述DataTables 添加到 DataSet。

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);
}
于 2012-08-22T17:15:27.140 回答
0

可以在 SQL 查询中试试这个:

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

我希望这会有所帮助

于 2012-08-22T16:05:11.840 回答