CREATE procedure t_update -- 通用更新存储过程
(
@TableName [varchar](50), -- 表名
@strSet [varchar](200) , -- 更新语句,不要加set
@strWhere [varchar](200) = '' -- 更新条件 (注意: 不要加 where)
)
as
declare @tiaojian [varchar](300)
declare @sql [varchar](300)if @strWhere='' --构造条件语句
begin
set @tiaojian=''
end
else
begin
set @tiaojian=' where '+@strWhere
endset @sql='update ['+@TableName+'] set '+@strSet+@tiaojian
exec(@sql)在一个投票应用中用到该过程,如果列名用变量的话,必定报错“某某列不存在”。
如果列名不用变量就不会报错,但是又增加很多繁琐的代码。
C#代码:
//写一个投票方法,用来处理投票
protected void toupiao(string column, int jifen) //前参数为投票项对应的列,后参数为对应的积分
{
SqlConnection conn = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "t_update";
cmd.Parameters.Add(new SqlParameter("@TableName", MyTable));
cmd.Parameters.Add(new SqlParameter("@strSet", "['"+column+"']=['"+column+"']+'"+jifen+"'"));
cmd.Parameters.Add(new SqlParameter("@strWhere", "[id]='"+id+"'"));
conn.Open();
int count = cmd.ExecuteNonQuery();
conn.Close();
conn.Dispose();
if(count>0)
{
//输出投票成功提示
}
}
请大侠们帮我改一下这个存储过程,让列名能够使用变量,谢谢!
(
@TableName [varchar](50), -- 表名
@strSet [varchar](200) , -- 更新语句,不要加set
@strWhere [varchar](200) = '' -- 更新条件 (注意: 不要加 where)
)
as
declare @tiaojian [varchar](300)
declare @sql [varchar](300)if @strWhere='' --构造条件语句
begin
set @tiaojian=''
end
else
begin
set @tiaojian=' where '+@strWhere
endset @sql='update ['+@TableName+'] set '+@strSet+@tiaojian
exec(@sql)在一个投票应用中用到该过程,如果列名用变量的话,必定报错“某某列不存在”。
如果列名不用变量就不会报错,但是又增加很多繁琐的代码。
C#代码:
//写一个投票方法,用来处理投票
protected void toupiao(string column, int jifen) //前参数为投票项对应的列,后参数为对应的积分
{
SqlConnection conn = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "t_update";
cmd.Parameters.Add(new SqlParameter("@TableName", MyTable));
cmd.Parameters.Add(new SqlParameter("@strSet", "['"+column+"']=['"+column+"']+'"+jifen+"'"));
cmd.Parameters.Add(new SqlParameter("@strWhere", "[id]='"+id+"'"));
conn.Open();
int count = cmd.ExecuteNonQuery();
conn.Close();
conn.Dispose();
if(count>0)
{
//输出投票成功提示
}
}
请大侠们帮我改一下这个存储过程,让列名能够使用变量,谢谢!
--->
cmd.Parameters.Add(new SqlParameter("@strSet", "["+column+"]=["+column+"]+'"+jifen+"'"));
看看分页的存储过程