如何操作Database.ExecuteSqlCommand()返回值?

时间:2015-07-07 15:15:45

标签: c# sql database entity-framework executequery

private int GetId(int userId, int companyId){
    string query = String.Format("SELECT Id FROM MyTable WHERE UserId = {0} AND CompanyId = {1}", userId, companyId);
    return _db.ExecuteSqlCommand(query);
}

我可以通过Microsoft的SQL Management Studio运行查询,它返回15.每次在代码中执行它都会返回-1。

MSDN API国家:

  

返回值

     

输入:System.Int32

     

执行命令后数据库返回的结果。

描述是非常愚蠢的,我认为我正在使用它应该是有效的。如何操纵查询返回15,或者这是不可能的?如果没有,有人有任何建议吗?

1 个答案:

答案 0 :(得分:1)

执行返回数据的命令(例如'SELECT'语句)时,应考虑使用SqlQuery方法。 ExecuteSqlQuery通常被视为DDL / DML命令,用于不返回数据的'UPDATE'之类的语句。

此外,您应始终参数化此类查询。如上所述,它容易受到SQL注入攻击。