首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

SqlParameter增添参数能否不指定parameterName,按顺序依次添加参数

2012-12-15 
SqlParameter添加参数能否不指定parameterName,按顺序依次添加参数正常添加参数是这样cmd.Parameters.AddW

SqlParameter添加参数能否不指定parameterName,按顺序依次添加参数
正常添加参数是这样


            cmd.Parameters.AddWithValue("@user", parms[0]);
            cmd.Parameters.AddWithValue("@pwd", parms[1]);
            cmd.Parameters.AddWithValue("@flag", parms[2]);

因为参数很多,如果类似这样添加应该会很方便

             for(int i=0;i<parms.Length;i++)
             {
                 cmd.Parameters.Add(parms[i]);
             }

但是这样做会报错的。SqlParameterCollection 只接受非空的 SqlParameter 类型对象,不接受 String 对象。
我将parms[i],做强制转换也不行
          
             for(int i=0;i<parms.Length;i++)
             {
                 cmd.Parameters.Add((SqlParameter)parms[i]);
             }

会报错。无法将类型为“System.String”的对象强制转换为类型“System.Data.SqlClient.SqlParameter”。

[最优解释]
你这这样用循环来,是方便,但是计算机根本就识别不了这个参数对应的是@user,还是谁?
除非有一种办法就是你把参数搞一个数组
string[]pram_value={"@user","@@pwd"....}
然后再用循环
for(int i=0;i<parms.Length;i++)
             {
                cmd.Parameters.AddWithValue(pram_value[i], parms[i]);
             }
[其他解释]
不能。必须指定参数名称。
[其他解释]
找到个办法,OleDbCommand 添加参数可以不输入参数名,按顺序依次对应添加就好了,我做了一个方法,可以不定参数个数,添加参数,参数名用空值替代即可,方便多了。

        public int Ole_Proc_unknow_parms_count(string Proc_Name, OleDbConnection con, int RES, params object[] parms)
        {
            OleDbCommand cmd = new OleDbCommand(Proc_Name, con);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue("@RES", RES);
            cmd.Parameters["@RES"].Direction = ParameterDirection.Output;
            for (int i = 0; i < parms.Length; i++)
            {
                cmd.Parameters.AddWithValue("", parms[i]);
            }
            con.Open();


            cmd.ExecuteNonQuery();
            RES = (int)cmd.Parameters["@RES"].Value;
            con.Close();
            return RES;
        }


[其他解释]

你这这样用循环来,是方便,但是计算机根本就识别不了这个参数对应的是@user,还是谁?
除非有一种办法就是你把参数搞一个数组
string[]pram_value={"@user","@pwd"....}
然后再用循环
for(int i=0;i<parms.Length;i++)
             {
                cmd.Par……
[其他解释]
你的想法是错误的,
Parameters.Add必须接收一个Parameter对象,该对象必须有参数名和参数值。
不然这个参数怎么和sql中的参数对应呢?
[其他解释]
access传参的时候是按照顺序来的
sql传参必须指定参数名
[其他解释]
你这这样用循环来,是方便,但是计算机根本就识别不了这个参数对应的是@user,还是谁?
除非有一种办法就是你把参数搞一个数组
string[]pram_value={"@user","@pwd"....}
然后再用循环
for(int i=0;i<parms.Length;i++)
             {
                cmd.Parameters.AddWithValue(pram_value[i], parms[i]);
             }
[其他解释]
null

热点排行