向查询添加多个参数

时间:2015-05-27 11:31:55

标签: c# mysql function

所以我希望创建一个很好的函数,以更好的方式查询MySQL命令。与此相关的东西:

    public int mysql_query_scalar(string query, parameters)
    {
            mysql_Open();
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = mysql_connection;
            cmd.CommandText = query;
            cmd.Prepare();

            cmd.Parameters.AddWithValue(parameterfromstring, parameternumber);

            mysql_Close();
            return int.Parse(cmd.ExecuteScalar().ToString());
    }

现在,我希望能够尽可能多地添加参数,然后开始构建参数。这怎么可能?如果是这样,请告诉我或给我一个片段。

我很高兴有人告诉我如何使用它。我是MySQL新手,我不是C#专家。

mysql_Open();和mysql_Close();是我自己做的功能。将它们称为mysql_connection.Open();和mysql_connection.Close();

2 个答案:

答案 0 :(得分:0)

您可以使用扩展方法,如下所示:

public static class DbCommandExtensions
{
    public static void AddInputParameters<T>(this IDbCommand cmd,
        T parameters) where T : class
    {
        foreach (var prop in parameters.GetType().GetProperties())
        {
            object val = prop.GetValue(parameters, null);
            var p = cmd.CreateParameter();
            p.ParameterName = prop.Name;
            p.Value = val ?? DBNull.Value;
            cmd.Parameters.Add(p);
        }
    }
}

请致电如下:

cmd.AddInputParameters(new { a = textBox1.Text, b = TextBox2.Text.... });

答案 1 :(得分:0)

我会这样称呼这个方法:

List<SqlParameter> sList = new List<SqlParameter>();
sList.Add(new SqlParameter("@myValue", myValue));
sList.Add(new SqlParameter("@myValue2", myValue2));
mysql_query_scalar(myQuery, sList.ToArray());

我将使用using-directives

public static int mysql_query_scalar(string Command, SqlParameter[] parameters)
{
    using (MySqlConnection myConnection = new MySqlConnection(ConnectionString))
    {
        myConnection.Open();
        using (MySqlCommand myCommand = new MySqlCommand(Command, myConnection))
        {
            myCommand.Parameters.AddRange(parameters); // Add Parameters here
            return (int)myCommand.ExecuteScalar();
        }
    }
}