C# I';我没有收到错误,但是代码没有按它应该的方式工作

C# I';我没有收到错误,但是代码没有按它应该的方式工作,c#,C#,我已经做了一个帖子表单,“教授们应该输入他们的用户名和密码才能发帖,我没有收到任何错误。”。 但是当我运行它时,即使我输入了正确的用户名和密码,它也总是执行“else”命令。 这是我的密码 protected void Button9_Click(object sender, EventArgs e) { string postname = this.Postuser.Text; string postpass = this.Postpass.Text

我已经做了一个帖子表单,“教授们应该输入他们的用户名和密码才能发帖,我没有收到任何错误。”。 但是当我运行它时,即使我输入了正确的用户名和密码,它也总是执行“else”命令。 这是我的密码

 protected void Button9_Click(object sender, EventArgs e)
    {

        string postname = this.Postuser.Text;
        string postpass = this.Postpass.Text;
        string posttitle = this.TOP.Text;
        string postbody = this.BOP.Text;
        string sqlstr2 = "select * from professors WHERE pname='" + Postuser + "' AND ppass='" + Postpass + "'";
        DataTable dt1 = DBFunction.SelectFromTable(sqlstr2, "DBS.accdb");
        if (dt1.Rows.Count > 0)
        {
            string sqlpost2 = "insert into post2(Professor,Title,Body)";
            sqlpost2 += "value('" + postname + "','" + posttitle + "','" + postbody + "')";
            DBFunction.ChangeTable(sqlpost2, "DBS.accdb");
        }
        else
            this.Label1.Text = "Posting on this wall is only allowed for profesors and it seems that you're not one";          
        DataList1.DataBind();
    }

在下面的代码行中,您将尝试连接PostUser和PostPass控件,而不是它们的文本属性

应更改以下代码:

string sqlstr2 = "select * from professors WHERE pname='" + Postuser + "' AND ppass='" + Postpass + "'";
像这样将代码更新为postname和postpass变量,这些变量包含user和password的文本值

string sqlstr2 = "select * from professors WHERE pname='" + postname + "' AND ppass='" + postpass + "'";

注意:您的代码容易受到sql注入攻击,因此您必须使用参数化查询

学习使用SqlParameters,如果问题仍然存在,您的帖子将包括一个问题:您是否尝试过调试代码并检查您的逻辑是否与您的案例所需逻辑相关?从外观上看,您的sql查询不是retu正在运行任何东西。调试时,
sqlstr2
的运行时值是多少?不是您假设它是什么,而是您观察到它是什么?所描述的行为只是告诉您没有与查询匹配的行。因此,您的第一步应该是实际查看查询。我使用的是oledb连接,所以我不认为在我可以使用SQLParameters的时候,你是对的,我错了…我解决了这个问题