Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.net MVC中获取数据_C#_Database_Asp.net Mvc - Fatal编程技术网

C# 如何在ASP.net MVC中获取数据

C# 如何在ASP.net MVC中获取数据,c#,database,asp.net-mvc,C#,Database,Asp.net Mvc,我正在尝试使用SQL查询获取IsAdmin值(此查询返回1行或0)。但是我得到了这个错误{“无效阅读暂时没有任何数据存在。”} 这是我的密码 public static bool Login (string iduser, string password, bool IsAdmin) { bool auth = false; string query = string.Format("Select IsAdmin from [user] w

我正在尝试使用SQL查询获取IsAdmin值(此查询返回1行或0)。但是我得到了这个错误{“无效阅读暂时没有任何数据存在。”} 这是我的密码

        public static bool Login (string iduser, string password, bool IsAdmin)
    {
        bool auth = false;
        string query = string.Format("Select IsAdmin from [user] where iduser = '{0}' AND mdp = '{1}' ;", iduser, password);
        SqlCommand cmd = new SqlCommand(query, con);
        con.Open();
        SqlDataReader re = cmd.ExecuteReader();
        auth = re.HasRows;
        if (auth) { IsAdmin = re.GetBoolean(0); } // the error is on this line (this line will alow me to get IsAdmin Value If the user exist)
        con.Close();
        return auth;

    }
你对恐怖分子很开放。如果你不使用参数化查询,你的网站在上线的那一刻就会被黑客攻击

像这样:

public static bool IsAdmin(string iduser, string password)
{
    using (var conn = new SqlConnection(ConnectionString))
    using (var cmd = conn.CreateCommand())
    {
        conn.Open();
        cmd.CommandText = @"
            SELECT IsAdmin 
            FROM [user] 
            WHERE iduser = @iduser AND mdp = @mdp;
        ";
        cmd.Parameters.AddWithValue("@iduser", iduser);
        cmd.Parameters.AddWithValue("@mdp", password);
        using (var reader = cmd.ExecuteReader())
        {
            return reader.Read() && reader.GetBoolean(reader.GetOrdinal("IsAdmin"));
        }
    }
}
你对恐怖分子很开放。如果你不使用参数化查询,你的网站在上线的那一刻就会被黑客攻击

像这样:

public static bool IsAdmin(string iduser, string password)
{
    using (var conn = new SqlConnection(ConnectionString))
    using (var cmd = conn.CreateCommand())
    {
        conn.Open();
        cmd.CommandText = @"
            SELECT IsAdmin 
            FROM [user] 
            WHERE iduser = @iduser AND mdp = @mdp;
        ";
        cmd.Parameters.AddWithValue("@iduser", iduser);
        cmd.Parameters.AddWithValue("@mdp", password);
        using (var reader = cmd.ExecuteReader())
        {
            return reader.Read() && reader.GetBoolean(reader.GetOrdinal("IsAdmin"));
        }
    }
}
你需要打电话

re.Read();
在尝试访问数据之前,将读取器移动到第一条记录
re.HasRows
不会导致读卡器移动到第一条记录

另外,一定要使用参数化查询。

您需要调用

re.Read();
在尝试访问数据之前,将读取器移动到第一条记录
re.HasRows
不会导致读卡器移动到第一条记录


另外,一定要使用参数化查询。

可能有人使用SQL注入攻击了您的网站并删除了所有用户?此外,SqlDataReader是IDisposable的。这并不是对您的问题的回答,但您进行SQL查询的方式容易受到SQL注入攻击。你应该总是使用参数化查询。哦,这让我渴望输入像
”这样的密码;删除表[用户]--可能有人使用SQL注入攻击了您的站点并删除了所有用户?此外,SqlDataReader是IDisposable的。这并不是对您的问题的回答,但您进行SQL查询的方式容易受到SQL注入攻击。你应该总是使用参数化查询。哦,这让我渴望输入像
”这样的密码;删除表[用户]--