首页 新闻 会员 周边

现在写DAL时是用SqlParameter[]还是List<SqlParameter>?

0
悬赏园豆:30 [已解决问题] 解决于 2012-12-06 17:36

自己在用时发现,如果定义的是SqlParameter[],那么参数名称和数量得是固定的,如果传入的参数和参数值都是动态的(比如IList<KeyValuePair<string,string>> data),我都是用List<SqlParameter>来添加的,比如下面的代码

 int i = 0;
            foreach (KeyValuePair<string, string> kvp in data)
            {
                i++;
                para.Add(new SqlParameter("@YsKinds" + i.ToString(), kvp.Key.ToString()));
                para.Add(new SqlParameter("@bzr" + i.ToString(), kvp.Value.ToString()));
                sql += string.Format(" select @bianhao,@YsKinds{0},@bzr{0},@category ,@SerialNumber,@Tempkinds Union ALL", i.ToString());
            }

不知道各位高手是如何做的?

问题补充:

可能你们没注意,如果构造SqlCommand的是SqlParameter[],而BLL中用的是List<sqlparameter>,BLL就必须para.toarray(),如果构造SqlCommand本身就是List,则无须转换?

happydaily的主页 happydaily | 菜鸟二级 | 园豆:301
提问于:2012-11-29 08:30
< >
分享
最佳答案
0
params SqlParameter[] parms
收获园豆:20
alienblog | 菜鸟二级 |园豆:332 | 2012-11-30 03:36
其他回答(7)
0

没啥区别,都要build为一个sql string

田林九村 | 园豆:2367 (老鸟四级) | 2012-11-29 08:50
0

原则上只要是一个array类型都是可以的。

而我一般因为类型的问题会使用List<Dictionary<string,string>>

中文代码 | 园豆:951 (小虾三级) | 2012-11-29 08:59
0

这个无所谓,都行

花开花又落 | 园豆:357 (菜鸟二级) | 2012-11-29 09:01
0

List吧,方便

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-29 09:08
0

首先:数组静态内存分配,需要预先分配存储空间。性能要比list好,但不灵活。

如果你可以预先知道参数的数量,就用SqlParameter[]。

List是动态内存分配,性能比数组要差些,但灵活。

看实际情况来选择。

geass.. | 园豆:1821 (小虾三级) | 2012-11-29 09:23
0

IEnumable<>

Lukexywang | 园豆:178 (初学一级) | 2012-11-29 23:14
0

如果是是基于具体的是想,用可变参数吧params SqlParameter[] parms,这样不管你参数有多少都可以,如果封装通用的SQL操作类,那么用List<SqlParameter>,取到参数列表再转换成数组

收获园豆:10
ljcheibao | 园豆:132 (初学一级) | 2012-12-03 16:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册