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

在第二种方法中获得"行"的正确方法是什么?

Razor和cshtml:如何db.执行select语句

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语句!始终使用参数化查询。