尝试在北风访问数据库上执行以下查询会抛出异常:
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