日期:2014-05-17  浏览次数:20909 次

请教参数化查询的问题
C# code

比如

string sql = "select * from tbTest where colA=@ID,colB=@Name";

或
string sql ="update tbTest set colB=@Name,colC=@Sex where id=@ID";

想把参数写到数组里,当做参数传递,如何实现呢?

OleDbParameter[] paramArray = new OleDbParameter[??];  //这里的count,怎么动态获取

paramArray[0] = new OleDbParameter("@ID",5);
paramArray[1] = new OleDbParameter("@Name","张三");

这里怎么用循环 完成这个参数数组元素的初始化,而不是和上面那样



------解决方案--------------------
用List<OleDbParameter>和其Add方法
------解决方案--------------------
用数组就不能动态获取你的count啊。
想要赋值,用循环不实际,毕竟@id,@name这些是无法用循环完成的。除非你有另外一个数组,假设你有了一个LIST,存放着,【@id,5】,【@name,张三】,【@sex,男】这类信息,那么这样就很简单生成你想要的赋值循环了。但是有了这个list还需要其他东西么?
------解决方案--------------------
C# code
OleDbParameter[] paramArray = new OleDbParameter[]{new OleDbParameter("@ID",5);
new OleDbParameter("@Name","张三")};

------解决方案--------------------
好像你这样做会很麻烦
------解决方案--------------------
我觉得楼主你想:根据传入的 SQL 自动判断有多少个参数吗?

根据你的代码,5 和 张三 是哪来的?如果封装成一个方法,那 5 和 张三 一定是作为 object[] 参数传进来的,对不对?如果是传进来的,那参数的个数自然就知道了呀。