关于传递给函数的c# SQL参数(集合)的建议

本文关键字:集合 参数 SQL 于传递 函数 | 更新日期: 2023-09-27 18:17:12

我想建立一个SQL函数,有大量的重用与ExecuteNonQuery,但我最大的问题是参数。

我不确定其他人会做什么使这个简单和有弹性,以便我可以简单地传递SQL脚本。

例如SELECT * FROM table WHERE userid = @userid AND isactive = @isactive,那么参数可能是一个数组。

public void ExecuteSQLCeNonQuery(string _Sql, ?parameter array of some type?)
{
    SqlCeConnection sCon = null;
    SqlCeCommand sCmd = null;
    int countOf = 0;
    try
    {
        sCon = new SqlCeConnection( sqlConnectionStringLocal);
        sCmd = new SqlCeCommand(_Sql, sCon);
        sCmd.Parameters.AddWithValue("@recBatchDateTarget", sDateOnly); <----- I know this will have to parse the collection some how.
        sCon.Open();
        countOf = (int)sCmd.ExecuteNonQuery();
        sCon.Close();
    }
    catch (SqlCeException ex)
    {
        Console.WriteLine("** DEBUG: ExecuteSQLCeNonQuery: {0} - {1}", ex.Message, sSql);
    }
    finally
    {
        if (sCmd != null)
            sCmd.Dispose();
        if (sCon != null)
            sCon.Dispose();
    }
}

对于如何处理数组或参数集合有什么建议吗?

关于传递给函数的c# SQL参数(集合)的建议

只需将其声明为IEnumerable<SqlParameter>,以便调用者可以提供任何他想要的集合(数组,List<SqlParameter>,…)

public void ExecuteSQLCeNonQuery(string _Sql, IEnumerable<SqlParameter> parameters)
{
    ...
    if (parameters != null) // Null check so caller can pass null if there are no parameters
    {
        foreach(SqlParameter parameter in parameters)
        {
            cmd.Parameters.Add(parameter);
        }
        ...
    }
}

跟随兔子洞让我来到这个帖子。参数的。adrange方法应该可以工作。

如何使用SqlCeParameterCollection?

你可以尝试创建一个单独的类来访问数据,把你的方法放在那里(比如delete方法,update,insert等),你的connectionstring,如果总是访问相同的数据库,可以在方法之外。在你的方法参数中,你可以传递一个带有格式化的字符串SQL语句,将sqlcommand对象设置为该参数。您可以将该类设置为静态或公共(然后需要这样做)在您的客户端表单中安装它)。

交货:内部clientform…

string query = "SELECT * from tablename";
sqlaccessclass sqlclass = new sqlaccessclass();
sqlclass.GetAll(query);

在ExecuteNonQuery中获取数据方法的返回类型应该是DataSet