0

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();

無効な操作というエラーが表示されます。エラーなしでパラメータを持たない保存されたクエリを呼び出すことができるので、保存されたクエリを正しく呼び出しているかどうかはわかりません。

4

1 に答える 1

0

問題を解決できました。この問題は、Northwind サンプル データベースにありました。次に、Northwind データベースを SQL Server から MS Access にインポートし、MS Access にストアド クエリも作成しました。Enterprise Library DAAB のチームと私が行った詳細な議論は次のとおりです: entlib.codeplex.com/Thread/View.aspx?ThreadId=223653 Access は、@ 文字の有無にかかわらずパラメーターを呼び出すことができる @ 文字を気にしません。

于 2010-08-30T03:12:20.507 に答える