我在尝试将会话对象类型转换为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();
请帮我解决这个错误!!
答案 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