0

我正在使用 VS 2010 Net Framework 3.5 和 MySQL 5.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

看到这篇文章你只能指定 in 和 out 但不能输入 http://www.codeproject.com/Articles/36484/Working-C-code-for-MySql-Stored-Procedures-IN-OUT

于 2012-08-17T19:32:12.267 回答
1

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

我会改成ExecuteProcedure这样的>>

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

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

我认为你说对了..

于 2012-08-17T20:41:44.713 回答