我正在使用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参数列表。
我的问题是:
更新
我的问题与层之间的沟通有关。例如,前一层可以是......
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);
这是一个很好的方法吗?
谢谢和亲切的问候,
答案 0 :(得分:1)
请参阅此文章,您只能指定输入和输出,但不能输入 http://www.codeproject.com/Articles/36484/Working-C-code-for-MySql-Stored-Procedures-IN-OUT
答案 1 :(得分:1)
如果您不希望顶层知道有关SQL或SQLParameters的任何信息,您可以传递更通用的内容,例如KeyValuePair
(http://msdn.microsoft.com/en-us/library/5tbh8a42.aspx)
我会将ExecuteProcedure
更改为此类&gt;&gt;
public Boolean ExecuteProcedure(string ProcedureName, params KeyValuePair<String, Object>[] ParameterCollection) { ... }
您可能还有一些辅助方法可以接收您在KeyValuePair
中调用的ExecuteProcedure
,以将它们转换为SQLParameter
个对象,然后您可以在查询中使用这些对象。< / p>
我认为你明白了......