1

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

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);
4

1 回答 1

3

你有几个问题。一,您没有在子查询中选择 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 
于 2014-05-14T13:37:56.643 回答