关于传递给函数的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();
}
}
对于如何处理数组或参数集合有什么建议吗?
只需将其声明为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