首页 新闻 会员 周边

新手请教,Entity Framework直接执行SQL语句,如何防止sql注入?听说使用参数化查询可以解决,怎么用呀?

0
悬赏园豆:10 [待解决问题]

比如:

function bool  SS(string no)

{

try{

return DataContext.SqlQuery<int>("select count(*) from Students where StudentNo='" +no+ "'").FirstOrDefault() > 0;

}

catch(Exception ex)

{。。。。}

}

 

上述方法怎么改成安全的参数化查询呀?小白,所以请说的直白一点,谢谢各位大侠了。求指导。

草莓麦兜的主页 草莓麦兜 | 初学一级 | 园豆:194
提问于:2015-06-02 14:54
< >
分享
所有回答(3)
-1

你这是在逗我吧,你这还EF呢,你这么喜欢SQL还是回去写ADO.NET好点。

如果是EF通常是这样的

var q = (from c in Datacontext.Students

           where c.StudentNo=no).count();

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-06-02 14:58

我知道你这种写法是不是要先定义Students对应的实体,现在是我不想定义实体,有没有方法可以直接用?那岂不是要直接用sql语句吗?不然怎么写呢?求赐教呀

支持(0) 反对(0) 草莓麦兜 | 园豆:194 (初学一级) | 2015-06-02 15:00

@草莓麦兜: 你这是在调戏大叔啊,不要实体了还用ORM框架干什么呢?当然有时候ORM框架不够灵活的话那就写SQL吧,传入参数就好了,用原始的ADO.NET里提供的方法。仅供参考,我几乎没用过ORM。

支持(0) 反对(0) 会长 | 园豆:12401 (专家六级) | 2015-06-03 23:47

@会长: 我就是个小白呀,其实我也没太搞明白,项目中的前辈们的框架模式用的就是EF,但是针对某个功能我不想定义实体了,因为实在是没必要,所以才来请教的,不过我已经解决了,针对你说的ORM,还有EF还有原始的ADO.NET其实我自己也搞不懂,糊里糊涂的。。。

支持(0) 反对(0) 草莓麦兜 | 园豆:194 (初学一级) | 2015-06-04 09:17

@草莓麦兜: 慢慢就懂了,最终走向迎娶白富美之路

支持(0) 反对(0) 会长 | 园豆:12401 (专家六级) | 2015-06-04 17:30
0

用参数啊

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2015-06-02 15:27
0

最后还是自己解决的,方法如下:

function bool  SS(string no)

{

try{

 string sql = "select count(*) from Students where StudentNo=@No";
                var args = new DbParameter[] {
                                      new SqlParameter { ParameterName = "NO", Value = no},
                                  };
                return DataContext.SqlQuery<int>(sql, args).FirstOrDefault() > 0;

}

catch(Exception ex)

{。。。。}

}

与大家共享下

草莓麦兜 | 园豆:194 (初学一级) | 2015-06-02 16:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册