ASP.NET语法不正确

时间:2016-02-26 16:14:40

标签: c# sql asp.net visual-studio

我是ASP.net的新手,并且已经按照一些视频教程来构建登录页面。我成功地创建了我的注册页面,将详细信息输入到我的数据库中的表中,但是我无法让我的登录页面工作= /。我已经在这里工作了几个小时,我不确定是否有你可以帮忙,但值得一试。我使用的IDE是visual studio(最新版本)。

我收到以下错误(点击图片会给出更近的视图,但您可能已经知道了): enter image description here

错误根据我尝试登录的人而变化,例如,当尝试以john身份登录时返回了上述错误,尝试以管理员身份登录时返回以下错误。

enter image description here

如下所示是我在登录按钮后面使用的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration; 

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

}

protected void Button2_Click(object sender, EventArgs e)
{
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
    conn.Open();
    string checkuser = "select count(*) from [Table] where [Login]'" + Loginbox.Text + "'";
    SqlCommand com = new SqlCommand(checkuser, conn);
    int temp = Convert.ToInt32(com.ExecuteScalar().ToString());
    conn.Close();
    if (temp == 1)
    {
        conn.Open();
        string CheckPasswordQuery = "select Password from [Table] where [Login]='" + Loginbox.Text + "'";
        SqlCommand Passcom = new SqlCommand(CheckPasswordQuery, conn);
        string password = Passcom.ExecuteScalar().ToString().Replace(" ","");

        if (password == Passwordbox.Text)
        {
            Session["New"] = Passwordbox.Text; 
            Response.Write("Password is correct");


        }
        else
        {
            Response.Write("Wrong password");

        }
    }
    else {

        Response.Write("User name does not exist");


    }
    }


}

下面显示的是表单页面视图,它运行得很好,按下登录按钮时会返回错误。

enter image description here

下面显示的是表格定义:

enter image description here

以下显示的是表格中包含的数据:

enter image description here

感谢大家的时间,感谢您提出任何帮助解决此问题的任何意见。

2 个答案:

答案 0 :(得分:4)

您的查询语法无效。请注意,虽然许多教程可能会向您展示这样的查询,但它非常不安全。你应该使用参数。但是,为了这个答案,你忘记了等号:

string checkuser = "select count(*) from [Table] where [Login] = '" + Loginbox.Text + "'";

答案 1 :(得分:3)

您的语法不正确,但如果您将其参数化以避免sql注入

,则实际上更安全
string checkuser = "select count(*) from [Table] where [Login] = @user";
SqlCommand com = new SqlCommand(checkuser, conn);
com.Parameters.Add("@user", Loginbox.Text);
...