【发布时间】:2013-06-07 01:24:26
【问题描述】:
我想使用ExecuteNonQuery 构建一个可大量重用的 SQL 函数,但我遇到的最大问题是参数。
我不确定其他人会做些什么来使这个简单而有弹性,以便我可以简单地传递 SQL 脚本。
例如SELECT * FROM table WHERE userid = @userid AND isactive = @isactive,然后也许permitters可以是一个数组。
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();
}
}
关于如何处理参数数组或集合有什么建议吗?
【问题讨论】:
-
重新发明轮子?我们不是已经有足够的 ORM 了吗?这是 2013 年的伙计们......
-
你可以做一个可变参数的事情:public void ExecuteSQLCeNonQuery(string _Sql, params object[] args);然后调用者将调用 ExecuteSQLCeNonQuery( "--query text", "length", 37, "height", 6.5 );在 ExecuteSQLCeNonQuery 中,您将一次遍历 args 两个索引。对于每对元素,抛出异常,除非 args[i] 是一个字符串,并且 args[i+1] 是
标签: c# sql parameters