SQL中用参数化方式添加新字段
本帖最后由 qiujialongjjj 于 2013-03-01 17:06:34 编辑
            sql中添加一个字段代码是:
Alter table RDMS_ProductInfo add col1 varchar(50) 
现在我想在程序中实现上述功能,代码如下:
   
//这样写不能实现该功能 
//查看sql发现变成:Alter table RDMS_ProductInfo add 'col1' varchar(50) 
StringBuilder strSql = new StringBuilder(); 
strSql.Append(" Alter table RDMS_ProductInfo add @col varchar(50)"); 
SqlParameter[] parameters = { 
                    new SqlParameter("@col", SqlDbType.VarChar,50)}; 
            parameters[0].Value = rdpims.colEN; 
            SQLHelper.RunSql(strSql.ToString(), parameters); 
求sql高手怎么实现参数化添加表字段。
以下是CSDN广告
              
              
------解决方案-------------------- create  procedure aa  
@col_name varchar(255),@col_type varchar(255) 
as 
begin 
declare @str varchar(1000) 
set @str='Alter table RDMS_ProductInfo add  '+@col_name+'  '+@col_type 
exec (@str) 
end ------解决方案-------------------- DDL语句本身不支持参数化,你只能用字符串拼接的方法实现,而1楼给的存储过程,是变相的字符串拼接,只是把拼接过程放到了存储过程内部去了,最终还是执行的拼接的语句,想要SQL注入一样没问题。
------解决方案-------------------- 引用: 本帖最后由 qiujialongjjj 于 2013-03-01 17:06:34 编辑 
            sql中添加一个字段代码是: 
SQL code?1Alter table RDMS_ProductInfo add col1 varchar(50) 
 
 
现在我想在程序中实现上述功能,代码如下: 
C# code?123456789   //这……  
你不用参数化不行吗,非得参数化啊
StringBuilder strSql = new StringBuilder(); 
strSql.Append(" Alter table RDMS_ProductInfo add " + rdpims.colEN + " varchar(50)"); 
 SQLHelper.RunSql(strSql.ToString()); 
------解决方案-------------------- 这样行吗?
StringBuilder strSql = new StringBuilder();
strSql.Append("
exec('Alter table RDMS_ProductInfo add' + @col + 'varchar(50)') ");
SqlParameter[] parameters = {
                    new SqlParameter("@col", SqlDbType.VarChar,50)};
            parameters[0].Value = rdpims.colEN;
            SQLHelper.RunSql(strSql.ToString(), parameters);
------解决方案-------------------- strSql.Append("exec('Alter table RDMS_ProductInfo add ' + @col + ' varchar(50)')");
引号两边有空格,你没搞错吧
要是还不行,你干脆把整个一句话作为参数得了
 
 
StringBuilder strSql = new StringBuilder(); 
strSql.Append("@col"); 
SqlParameter[] parameters = {