我现在使用SqlCommand的Parameter参数来动态地生成SQL语句,代码如下:
SqlCommand cmd = new SqlCommand("insert into TBOrganization(@Name1,@Name2) values(@Value1,@Value2)",m_Connection);
SqlParameter parameter0 = new SqlParameter("@Name1",SqlDbType.VarChar,50,"orgid");
SqlParameter parameter1 = new SqlParameter("@Name2", SqlDbType.VarChar, 50,"orgname")SqlParameter parameter2 = new SqlParameter("@Value1","111");
SqlParameter parameter3 = new SqlParameter("@Value2", "222");
cmd.Parameters.Add(parameter0);
cmd.Parameters.Add(parameter1);
cmd.Parameters.Add(parameter2);
cmd.Parameters.Add(parameter3);
m_Connection.Open();
cmd.ExecuteNonQuery();在执行ExecuteNonQuery()方法的时候,报错:
被准备语句 '(@Name1 varchar(50),@Name2 varchar(50))insert into Organizatio' 需要参数 @Name1,但未提供该参数。]请问各位高手,这是怎么回事,我给参数赋值是按照方法的各个参数赋的值啊,为什么说没提供该参数?谢谢各位

解决方案 »

  1.   

    大哥,你还没有写完整啊,你看你的
    SqlParameter parameter2 = new SqlParameter("@Value1","111");
    SqlParameter parameter3 = new SqlParameter("@Value2", "222");
    这样可以吗?
      

  2.   

    to wanyong775(小小的网少年) 这样是可以的啊,ADD()重载的方法中有一种是这样的,关键是前面的给字段名变量赋值的有问题,报错,如果字段名不是变量,而是数据库字段名成的话,只给字段值赋值是可以通过的,现在报错也是报给字段名变量赋值的时候
      

  3.   

    你是用的.NET 2.0 吧,这样试试:
    --------------------------------------------------------------------
                //建立连接
                SqlConnection cn = new SqlConnection(connectionString);
                //定义指令,类型为存储过程
                SqlCommand cmd = new SqlCommand("addcangku", cn);
                cmd.CommandType = CommandType.StoredProcedure;
                //添加参数
                cmd.Parameters.Add("@Name1", SqlDbType.VarChar, 50);
                cmd.Parameters.Add("@Name2", SqlDbType.VarChar, 50);
                cmd.Parameters.Add("@Value1", SqlDbType.VarChar, 5);
                cmd.Parameters.Add("@Value2", SqlDbType.VarChar, 5);
                //给参数付值
                cmd.Parameters.["@Name1"].Value="orgid";
                cmd.Parameters.["@Name2"].Value="orgname";
                cmd.Parameters.["@Value1"].Value="111";
                cmd.Parameters.["@Value2"].Value="222";
                //打开连接
                cn.Open();
                cn.Close();
    --------------------------------------------------------------------
      

  4.   

    to zhangbug_net(.net向往ing)
    是的,我是用.net2.0
    你那个"addcangku"是什么意思啊?你这段中没有表名,它往哪张表插啊?
    另外,添加参数的时候,字段名和字段值都要赋类型和长度吗?而且我看你字段的长度和值的长度都不一样啊?
    谢谢你了,我先试试
      

  5.   

    SqlParameter只是给查询的参数传值的,比如存储过程的参数.
    如果希望用动态字段,直接用变量就可以了,不需要SqlParameter.
    SqlCommand cmd = new SqlCommand("insert into TBOrganization(" + sName1 + "," +sName2 +") values(@Value1,@Value2)",m_Connection);
    string sName1 = "orgid";
    string sName2 = "orgname";SqlParameter parameter1 = new SqlParameter("@Value1","111");
    SqlParameter parameter2 = new SqlParameter("@Value2", "222");cmd.Parameters.Add(parameter1);
    cmd.Parameters.Add(parameter2);m_Connection.Open();
    cmd.ExecuteNonQuery();