无法将“System.Data.SqlClient.SqlDataReader”类型的对象转换为“System.IConvertible”类型

时间:2017-10-20 18:14:29

标签: sql asp.net-mvc

我在尝试将会话对象类型转换为int时遇到此错误,我需要在另一个数据类型为int的查询中使用该值。

SqlConnection sqlConnection1 = new SqlConnection("Persist Security Info=False;Integrated Security=true;Initial Catalog=Remember;server=DESKTOP-59SGH72\\SQLEXPRESS;Trusted_Connection=True;Database=sport");
        SqlCommand cmd = new SqlCommand();
        SqlDataReader reader;

        cmd.CommandText = "select user_id from users where user_name='" + Session["usern"] + "'";
        cmd.CommandType = CommandType.Text;
        cmd.Connection = sqlConnection1;

        sqlConnection1.Open();

        reader = cmd.ExecuteReader();

        Session["userid"] = reader;

        var uid = Convert.ToInt16(Session["userid"]);

        // Data is accessible through the DataReader object here.

        sqlConnection1.Close();

请帮我解决这个错误!!

1 个答案:

答案 0 :(得分:0)

首先你的代码很糟糕 - 它完全被注入攻击所攻击。您应该使用参数化查询。

关于你的问题,这样的事情可行,但你真的应该做很多错误检查和健全性检查:

reader = cmd.ExecuteReader();

reader.Read();

Session["userid"] = reader[0];

您可能应该查看包含一些不错示例的文档 https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader(v=vs.110).aspx