我正在尝试使用SQL select语句从数据库中读取以验证登录表单。我遇到的问题是它告诉我它的列名无效。
SELECT * FROM users
WHERE [username] = @theusername
AND [password] = @thepassword
其中@theusername是“Rymo_18”的参数化值,为了参数,密码是“密码”。
我得到的错误是:
无效的列名称“Rymo_18”。
无效的列名'密码'
不知道为什么我会收到这些错误。我已经尝试交换=符号周围的值,尝试直接使用值(用户名=“Rymo_18”)和所有其他问题来摆弄它,我没有运气。我的数据库中没有其他名为“user”的表。
编辑:这是我在使用的C#中出现的代码:
string user = unametext.Text;
string pword = pwordtext.Text;
string connectionstring = WebConfigurationManager.ConnectionStrings["elmtreeconnect"].ConnectionString;
SqlConnection myconnection = new SqlConnection(connectionstring);
myconnection.Open();
string query = "SELECT * FROM users WHERE (username= @theusername OR email = @theusername) AND password = @thepassword";
SqlCommand attemptLogin = new SqlCommand(query, myconnection);
attemptLogin.Parameters.AddWithValue("@theusername", user);
attemptLogin.Parameters.AddWithValue("@thepassword", pword);
SqlDataReader rdr = attemptLogin.ExecuteReader();
if (rdr.HasRows)
{
Session["user"] = rdr["username"].ToString();
Session["id"] = rdr["id"].ToString();
Session["type"] = rdr["accountType"].ToString();
Response.Redirect("loginsuccess.aspx");
}
else
{
unametext.Text = "";
pwordtext.Text = "";
statusLabel.Text = "Login failed. Please try again, or contact info@elmtree.co.uk for assistance";
}
感谢您的帮助!
答案 0 :(得分:0)
string query = "select 1 from users where username=@theusername and password=@password";
...
if(rdr.Read()){
...
}
exists
应在if exists(select...)