C#和SQL简单身份验证(visual studio)

C#和SQL简单身份验证(visual studio),c#,sql,login,C#,Sql,Login,我对简单的授权有问题。我用用户名和密码创建数据库,在html上我设置了两个文本框。在数据库中,我有一个记录(admin,admin)。 这是我的代码: SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connect"].ToString()); protected void Page_Load(object sender, EventArgs e) {} protected void

我对简单的授权有问题。我用用户名和密码创建数据库,在html上我设置了两个文本框。在数据库中,我有一个记录(admin,admin)。 这是我的代码:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connect"].ToString());

protected void Page_Load(object sender, EventArgs e)
{}

protected void Button1_Click(object sender, EventArgs e)
{
    con.Open();

    string query = "select * from [Usery] where Login='" + login.Text + "' and Pass='" + pass.Text + "'";

    SqlCommand cmd = new SqlCommand(query, con);
    string output = cmd.ExecuteScalar().ToString();

    if (output == "1")
    {
        Session["user"] = login.Text;
        Response.Write("Good");
    }
    else
    {
        Response.Write("Error");
    }             
}
和连接字符串:

<connectionStrings>
    <add name="connect" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\User.mdf;Integrated Security=True"
      providerName="System.Data.SqlClient" />
  </connectionStrings>

当我单击开始时,我尝试使用admin/admin登录,但在浏览器上,我有类似于我的else:Error的消息

在visual studio中,0出现错误,0出现警告


我认为这是微不足道的。我做错了什么?

或者,您可以将查询更改为如下内容,保持其余代码不变

string query = "select count(1) from [Usery] where Login='" + Trim(login.Text) + "' and Pass='" + pass.Text + "'";

此外,正如@mason所建议的,您所采取的方法很容易受到SQL注入攻击。请详细阅读,转而使用存储过程

您的代码存在巨大的安全漏洞。你需要修理它。您很容易受到SQL注入攻击。有关这意味着什么以及如何修复它的信息,请访问。错误信息?请尝试
Select 1
,而不是
Select*
。请记住,
ExecuteScalar
返回结果集中第一行的第一列,如果结果集为空(用户名和/或密码不正确),则返回空引用(Visual Basic中没有任何内容)哈哈,Thak You@Rui Jarimba@Dejmian记住mason所写的,您的代码受SQL注入的约束。