【发布时间】:2011-03-30 05:28:13
【问题描述】:
我想知道是否可以使用 DAAB 调用带有参数的 MS Access 存储查询。
我正在使用 Northwind 示例数据库来测试这个场景,我在 MS Access 中创建了以下带有参数的存储查询:
PARAMETERS FirstName Text ( 255 );
SELECT Employees.ID
FROM Employees
WHERE (((Employees.[First Name])=[@FirstName]));
此查询以名称存储:GetEmployeeIDByName
我在 DAAB 上创建了一个包装器,以允许访问各种数据库,如 SQL、Oracle、任何 OLEDB 和 ODBC 数据库。
以下是我的测试示例代码:
Database db = new GenericDatabase("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Database\Access\Northwind 20071.accdb",OleDbFactory.Instance);
DbCommand cmd = db.GetStoredProcedure("GetEmployeeIDByName");
db.AddInParameter(cmd,"@FirstName",DbType.String,40);
object employeeID = db.ExecuteScalar();
我收到错误无效操作。我不确定我是否正确调用了存储的查询,因为我可以调用没有任何参数的存储查询而不会出现任何错误。
【问题讨论】:
-
Jet/ACE SQL 中的参数不使用@。
-
我能够解决这个问题。问题出在 Northwind 示例数据库上。然后,我将 Northwind 数据库从 SQL Server 导入 MS Access,并在 MS Access 中创建了存储查询。以下是我与 Enterprise Library DAAB 团队进行的详细讨论:entlib.codeplex.com/Thread/View.aspx?ThreadId=223653 希望对您有所帮助。 Access 不关心@ 字符,您可以在有或没有@ 字符的情况下调用参数。