0

私はVS2010Net Framework3.5とMySQL5.1をC#で使用しています

基本的に、さまざまなタイプ(int、string、booleanなど)のパラメーターがいくつかあり、それらを入力変数としてMySQLパラメーターに送信する必要があります。

私のアプリの最後のレイヤーはこれを行っています:

            public Boolean ExecuteProcedure(string ProcedureName, List<SqlParameter> ParameterCollection) {

                Command.CommandType = CommandType.StoredProcedure;
                Command.CommandText = ProcedureName;
                Command.Parameters.AddRange(ParameterCollection.ToArray<SqlParameter>());
                Command.ExecuteNonQuery();
(... etc etc)

したがって、基本的には、前のレイヤーですべてのデータをSQLパラメーターのリストに変換する必要があります。

私の質問は次のとおりです。

  • これはいい考えですか?たぶん私は別の種類のオブジェクトをExecuteProcedure関数に送信しましたか?
  • 異なる種類の変数をSQLParameterに変換するためのより良い方法はどれですか?
  • この種のプログラミングの使用にはどのような制限がありますか?

アップデート:

私の質問は、レイヤー間の通信に関連しています。たとえば、前のレイヤーは...

                List<SqlParameter> INParameters = new List<SqlParameter>();
            INParameters.Add(new SqlParameter("error_code",error_code));
            INParameters.Add(new SqlParameter("error_description",error_description));
            SysDB.ExecuteProcedure("sys_log_insert_error", INParameters);

これはこれを行うための良い方法ですか?

よろしくお願いします。

4

2 に答える 2

1

この記事を参照してください。指定できるのは入力と出力のみで、 http://www.codeproject.com/Articles/36484/Working-C-code-for-MySql-Stored-Procedures-IN-OUTと入力することはできません。

于 2012-08-17T19:32:12.267 に答える
1

最上位層にSQLまたはSQLParametersについて何も知られたくない場合は、KeyValuePairhttp://msdn.microsoft.com/en-us/library/5tbh8a42.aspx)のようなより一般的なものを渡すことができます。

私はExecuteProcedureこのようなものに変更します>>

public Boolean ExecuteProcedure(string ProcedureName, params KeyValuePair<String, Object>[] ParameterCollection) { ... }

KeyValuePairまた、呼び出したsを取り込んで、クエリで使用できるオブジェクトExecuteProcedureに変換するヘルパーメソッドがある場合もあります。SQLParameter

私はあなたがポイントを得ると思います。

于 2012-08-17T20:41:44.713 に答える