C# 带有select查询的空数据集
我正在使用OleDb查询Access数据库。下面的查询在Access中工作(如嵌套的内部联接和许多括号所示,Access实际上是从设计GUI构建查询的)。为难看的表/列名道歉C# 带有select查询的空数据集,c#,.net,dataset,oledb,C#,.net,Dataset,Oledb,我正在使用OleDb查询Access数据库。下面的查询在Access中工作(如嵌套的内部联接和许多括号所示,Access实际上是从设计GUI构建查询的)。为难看的表/列名道歉 SELECT DISTINCT Table1.A, Table2.B, Table3.[C] FROM (Table4 INNER JOIN (Table2 INNER JOIN Table1 ON Table2.ID = Table1.Table2ID) ON Table4.ID = Table1.Table4ID) I
SELECT DISTINCT Table1.A, Table2.B, Table3.[C]
FROM (Table4 INNER JOIN (Table2 INNER JOIN Table1 ON Table2.ID = Table1.Table2ID) ON Table4.ID = Table1.Table4ID) INNER JOIN ((Table3 INNER JOIN Table5 ON Table3.ID = Table5.[Table3ID]) INNER JOIN Table6 ON Table3.ID = Table6.Table3ID) ON Table1.ID = Table6.Table1ID
WHERE (((Table1.D)=False) AND ((Table1.E)=True)))
它返回许多行。但是,以下代码会导致一个空数据集。由于代码的设置方式,可能会出现语法错误(包装器类会处理其中一些代码行,因此为了简单起见,我不得不对其进行分解)
以这种方式在数据库上执行的其他select查询返回数据,那么为什么返回的是空数据集呢?您需要打开连接吗?对不起,这是我解开代码时的一个错误。我使用了VisualStudio调试器,是的,连接状态当前处于打开状态。我将编辑代码以反映这一点。检查是否引发任何异常(菜单“调试”,异常…,选择“CLR”-异常)2。执行语句时检查连接是否打开。3.在具有多个具有镜像数据库结构的服务器的环境中,检查您是否位于正确的服务器和数据库上。是否收到错误?某种未经处理的异常,甚至是在
catch
中捕获的异常?我会尝试将WHERE((Table1.D)=False)和((Table1.E)=True))
更改为WHERE((Table1.D=False)和(Table1.E=True))
// db initialized prior
OleDbConnection con = new OleDbConnection(db);
con.Open();
OleDbCommand cmd = new OleDbCommand(@"
SELECT DISTINCT Table1.A, Table2.B, Table3.[C]
FROM (Table4 INNER JOIN (Table2 INNER JOIN Table1 ON Table2.ID = Table1.Table2ID) ON Table4.ID = Table1.Table4ID) INNER JOIN ((Table3 INNER JOIN Table5 ON Table3.ID = Table5.[Table3ID]) INNER JOIN Table6 ON Table3.ID = Table6.Table3ID) ON Table1.ID = Table6.Table1ID
WHERE (((Table1.D)=False) AND ((Table1.E)=True)))
");
cmd.Connection = con;
DataSet data = new DataSet();
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
adapter.Fill(data);