引:

花了一上午才找到原因:

用OLEDB访问ACCESS时,含子查询的语句如:

select ... from t1 where a=? and not exists (select * from t2 where b=t1.b and c=?)

第二个占位符(即子查询中的?)会先获取,因此 OleDbDataAdapter.SelectCommand.Parameters.Add(...) 要先添加子查询中的参数。

 是的 我今天下午也遇到了类似的问题,做习惯的sqlserver一用access直接不知道问题出哪里了.
 oledb有一个四个参数的构造方法,末尾是添加列名,我还以为 写上列名后,他就可以映射到列去了,结果是我错了. 写了也是白写的, 还是要注意顺序的 不过楼上兄弟用? 虽然简单,但是我觉得还是用全名好一点