首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

简单的sql列名参数化有关问题,解决马下给分

2013-03-13 
简单的sql列名参数化问题,解决马上给分SqlParameter[] paras new SqlParameter[] { new SqlParameter(@

简单的sql列名参数化问题,解决马上给分


SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@colname", "id,name,role") };
string sql = "select @colname from demo"

以上的代码是实现不了的

问题:如果不采用存储过程,代码直接传递字符串sql语句,能不能在sql语句的列名上使用参数化(例如上面代码)? sql? 参数化?
[解决办法]
列名不能参数化,不过你可以使用string.Format()
string[] columns = { "id", "name", "role" };
string sql = string.Format("select {0} from demo", string.Join(", ", columns));
[解决办法]
列名不可以参数,
不如把整个sql参数化好了

SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@sql", "select id,name,role from demo") };
string sql = "@sql"

[解决办法]
列名不要带空格,构造SQL之前去掉空格和逗号引号这些非法字符,也就没有注入风险了。
[解决办法]
假设可以参数化,那你那样写是select id,name,role这三列呢还是select "id,name,role"这一个字符串呢?
还是拼字符串吧

热点排行