我现在使用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,但未提供该参数。]请问各位高手,这是怎么回事,我给参数赋值是按照方法的各个参数赋的值啊,为什么说没提供该参数?谢谢各位
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,但未提供该参数。]请问各位高手,这是怎么回事,我给参数赋值是按照方法的各个参数赋的值啊,为什么说没提供该参数?谢谢各位
SqlParameter parameter2 = new SqlParameter("@Value1","111");
SqlParameter parameter3 = new SqlParameter("@Value2", "222");
这样可以吗?
--------------------------------------------------------------------
//建立连接
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();
--------------------------------------------------------------------
是的,我是用.net2.0
你那个"addcangku"是什么意思啊?你这段中没有表名,它往哪张表插啊?
另外,添加参数的时候,字段名和字段值都要赋类型和长度吗?而且我看你字段的长度和值的长度都不一样啊?
谢谢你了,我先试试
如果希望用动态字段,直接用变量就可以了,不需要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();