我正在使用VS 2010 Net Framework 3.5和MySQL 5.1,以及C#

基本上,我有一些具有不同类型(int,string,boolean等)的参数,我需要将它们作为输入vars发送到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函数?
将我的其他类型的var转换为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);


这是这样做的好方法吗?

谢谢和亲切的问候,

最佳答案

如果您不希望顶层了解有关SQL或SQLParameters的任何信息,则可以传递更通用的内容,例如KeyValuePairhttp://msdn.microsoft.com/en-us/library/5tbh8a42.aspx

我将ExecuteProcedure更改为此类>>

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

您可能还具有一些辅助方法,该方法接受在KeyValuePair中调用的ExecuteProcedure,将它们转换为SQLParameter对象,然后可以在查询中使用。

我认为你说对了..

07-26 00:00