DAABを使用して、パラメーターを使用してMSAccessの保存されたクエリを呼び出すことができるかどうかを確認したいと思いました。
Northwindサンプルデータベースを使用してこのシナリオをテストしています。MSAccessのパラメーターを使用して次のストアドクエリを作成しました。
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();
無効な操作というエラーが表示されます。エラーなしでパラメータを持たない保存されたクエリを呼び出すことができるので、保存されたクエリを正しく呼び出しているかどうかはわかりません。