Razor和cshtml:如何db.执行select语句
本文关键字:执行 select 语句 db 如何 cshtml Razor | 更新日期: 2023-09-27 18:10:12
我正在做一个快速的CSHTML页面用于测试。
我需要根据URL上的id参数访问数据库:
var id = Request.QueryString["id"];
var db = Database.Open("mydatabase_connection");
var query = "select * from myrecord where id = " + id;
var row = db.QuerySingle(query);
//我能够以以下方式显示所选记录的字段(称为名称):
@row.name
显然,上述方法容易受到安全攻击。我希望通过以下方式检索记录:
var query = "select * from myrecord where id=@0";
var row = db.Execute(query, id);
但是,在检索字段值时得到运行时错误:
@row.name
在第二种方法中获得"行"的正确方法是什么?
Database.Execute
用于执行非查询SQL语句,并返回受该SQL语句影响的记录计数作为Int
。
我认为你真正想用的方法是Database.QuerySingle
,它返回一个Object
。
ie。
var query = "select * from myrecord where id=@0";
var row = db.QuerySingle(query, id);
剃刀: @row.name
就SQL注入的安全性而言,这种方法是安全的。您正在将URL值作为参数传递到查询中。
不安全的运行查询的方式是使用字符串连接: var query = "select * from myrecord where id=" + id;
不要这样做!它允许恶意用户在您的查询中附加SQL语句!始终使用参数化查询。