.NET Core 中的原始 SQL

2024-01-17

我遇到这个问题:我需要从 .NET Core 应用程序执行原始 SQL。所以我有这个代码

var sqlConnection1 = new SqlConnection("Server=(localdb)\\mssqllocaldb;Database=MyDB;Trusted_Connection=True;MultipleActiveResultSets=true");
var cmd = new SqlCommand
{
    CommandText = "SELECT * FROM dbo.Candidates WHERE id = " + model.CandidateId,
    CommandType = CommandType.Text,
    Connection = sqlConnection1
};

sqlConnection1.Open();
var wantedRow = cmd.ExecuteReader();
sqlConnection1.Close();

我无法访问 WantRow 中的数据... (当我使用实体框架时,此查询有效,但我无法使用实体框架)。在.NET Core 中可以吗?


First,你的代码是一扇敞开的门SQL注入攻击 https://en.wikipedia.org/wiki/SQL_injection。使用参数化查询而不是连接字符串。

Second, 使用using实现 IDisposable 接口的所有内容的声明。在本例中是连接、命令和读取器。

Third,吸引读者只是工作的一部分。你还需要使用reader.Read()并获取值。

using(var sqlConnection1 = new SqlConnection("Server=(localdb)\\mssqllocaldb;Database=MyDB;Trusted_Connection=True;MultipleActiveResultSets=true"))
{ 
    using(var cmd = new SqlCommand()
    {
        CommandText = "SELECT * FROM dbo.Candidates WHERE id = @id",
        CommandType = CommandType.Text,
        Connection = sqlConnection1
    })
    {
        cmd.Parameters.Add("@id", SqlDbType.Int).Value = model.CandidateId
        sqlConnection1.Open();

        using(var reader = cmd.ExecuteReader())
        {
            if(reader.Read())
            {
                var id = reader[0];
                var whatEver = reader[1];
                // get the rest of the columns you need the same way
            }
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET Core 中的原始 SQL 的相关文章

随机推荐