嵌套的 SELECT 引发异常"No value given for one or more required parameters"



尝试在北风访问数据库上执行以下查询会抛出异常:

No value given for one or more required parameters

我的简化查询是

SELECT * FROM (SELECT [Orders].[OrderDate] FROM [Orders]) t 
WHERE [Orders].[CustomerID]=?

如果使用嵌套SELECT,则只抛出异常。

问题:是否有使用嵌套SELECT和参数的方法?

我的代码是:
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _databasePath);
conn.Open();
OleDbCommand com = new OleDbCommand(@"SELECT * 
           FROM (SELECT [Orders].[OrderDate] FROM [Orders]) t 
           WHERE [Orders].[CustomerID]=?", conn);
com.Parameters.Add("Bla", OleDbType.WChar);
com.ExecuteReader(CommandBehavior.CloseConnection);

您有几个问题。首先,您没有在子查询中选择CustomerID字段,因此无法从外部查询中对其进行过滤。其次,在外部查询中引用了错误的表别名。试试这个:

SELECT * 
FROM (SELECT [Orders].[OrderDate], [Orders].[CustomerID] FROM [Orders]) t 
WHERE t.[CustomerID]=?

或者,您不能选择CustomerID并将参数放在子查询中:

SELECT * 
FROM (SELECT [Orders].[OrderDate] FROM [Orders] WHERE [Orders].[CustomerID]=?) t 

相关内容

  • 没有找到相关文章

最新更新