none
SqlParameter的问题 RRS feed

  • 问题

  • 为什么同一个SqlParameter不能给两个cmd使用,好像是这样
    执行了两个cmd命令,他们都包含同一个SqlParameter,结果报了一个错:说另外一个SqlParameter的集合已经包含该SqlParameter
    可是我需这样怎么办,我总不能老是重复声明一个SqlParameter,再给他赋相同的值?
    2009年9月14日 3:24

答案

  • 你好,SqlParameter可以用于不同的CMD,

                SqlCommand comm1 = new SqlCommand();
                SqlCommand comm2 = new SqlCommand();
                SqlParameter param = new SqlParameter();
                .....
                comm1.Parameters.Add(param);
                comm2.Parameters.Add(param);
    jon.valett@gmail.com
    • 已建议为答案 NineTyNine_LiPei 2009年9月14日 6:35
    • 已标记为答案 m s 2009年9月17日 10:20
    2009年9月14日 3:27
    版主
  • 你还是需要重新创建,功能很相似可以写公用的方法来达到代码重用。
    知识改变命运,奋斗成就人生!
    2009年9月14日 4:02
    版主
  • 您好,的确,可以采用X.X.Y的思路。重构一个方法返回公用的参数集。
    例如:
    SqlParameter[] GetSqlParameters
    {
         SqlParameter[] sqlParameters = new SqlParameter[n];
         SqlParameter sqlParameter = new SqlParameter();
         ......
         return sqlParameters;
    }

    如果是单个参数共享:

    SqlParameter GetSqlParameter
    {
        SqlParameter sqlParameter = new SqlParameter();
         ......
         return sqlParameter;
    }
    2009年9月14日 5:22
  • cmd.Parameters.Clear()
    【孟子E章】
    • 已建议为答案 NineTyNine_LiPei 2009年9月14日 6:35
    • 已标记为答案 m s 2009年9月17日 10:20
    2009年9月14日 5:24
    版主

全部回复

  • 你好,SqlParameter可以用于不同的CMD,

                SqlCommand comm1 = new SqlCommand();
                SqlCommand comm2 = new SqlCommand();
                SqlParameter param = new SqlParameter();
                .....
                comm1.Parameters.Add(param);
                comm2.Parameters.Add(param);
    jon.valett@gmail.com
    • 已建议为答案 NineTyNine_LiPei 2009年9月14日 6:35
    • 已标记为答案 m s 2009年9月17日 10:20
    2009年9月14日 3:27
    版主
  • 我定义个SqlParameter param = new SqlParameter();把它放到SqlParameter[]中
    然后foreach数组,执行comm1.Parameters.Add(param);

    当我又定义了一个SqlParameter[],把param放进去,然后foreach数组,执行comm2.Parameters.Add(param);的时候报了一个错:说另外一个SqlParameter的集合已经包含该SqlParameter
    2009年9月14日 3:36
  • 你还是需要重新创建,功能很相似可以写公用的方法来达到代码重用。
    知识改变命运,奋斗成就人生!
    2009年9月14日 4:02
    版主
  • 您好,的确,可以采用X.X.Y的思路。重构一个方法返回公用的参数集。
    例如:
    SqlParameter[] GetSqlParameters
    {
         SqlParameter[] sqlParameters = new SqlParameter[n];
         SqlParameter sqlParameter = new SqlParameter();
         ......
         return sqlParameters;
    }

    如果是单个参数共享:

    SqlParameter GetSqlParameter
    {
        SqlParameter sqlParameter = new SqlParameter();
         ......
         return sqlParameter;
    }
    2009年9月14日 5:22
  • cmd.Parameters.Clear()
    【孟子E章】
    • 已建议为答案 NineTyNine_LiPei 2009年9月14日 6:35
    • 已标记为答案 m s 2009年9月17日 10:20
    2009年9月14日 5:24
    版主