【问题标题】:Calling MS Access Stored Queries with Parameters using DAAB v5.0使用 DAAB v5.0 调用带有参数的 MS Access 存储查询
【发布时间】: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 不关心@ 字符,您可以在有或没有@ 字符的情况下调用参数。

标签: ms-access daab


【解决方案1】:

我能够解决问题。问题出在 Northwind 示例数据库上。然后,我将 Northwind 数据库从 SQL Server 导入 MS Access,并在 MS Access 中创建了存储的查询。这是我与 Enterprise Library DAAB 团队进行的详细讨论:entlib.codeplex.com/Thread/View.aspx?ThreadId=223653 希望对您有所帮助。 Access 不关心 @ 字符,您可以使用或不使用 @ 字符来调用参数。

【讨论】:

  • SQL 方言中@ 用于参数,@FirstName 引用的参数名称是什么?在Jet/ACE中,参数名是@FirstName,但是在SQL方言中@用来划定参数,参数名不是FirstName吗?我是一名 Access 开发人员,没有使用过其他 SQL 方言,所以在这里我可能会感到困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多