尝试在northwind访问数据库上执行以下查询会引发异常:
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);
答案 0 :(得分: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