Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#登录代码不起作用_C#_Mysql_Login - Fatal编程技术网

C#登录代码不起作用

C#登录代码不起作用,c#,mysql,login,C#,Mysql,Login,我正在尝试使用跨表参数化SQL创建登录代码。代码不起作用,我不知道为什么 C#代码: 我希望它能让学生或老师(不同的用户)使用正确的用户名和密码进行访问。但是,我一直得到相同的输出: 用户名或密码不正确。请再试一次 MySql.Data.dll中发生类型为“System.IndexOutOfRangeException”的未处理异常 其他信息:在结果中找不到指定列:teacher.username 也许您必须在sql查询中使用或条件? 如果我想编辑代码,以便:如果教师登录-发送教师到教师表单。

我正在尝试使用跨表参数化SQL创建登录代码。代码不起作用,我不知道为什么

C#代码:

我希望它能让学生或老师(不同的用户)使用正确的用户名和密码进行访问。但是,我一直得到相同的输出:

用户名或密码不正确。请再试一次

MySql.Data.dll中发生类型为“System.IndexOutOfRangeException”的未处理异常

其他信息:在结果中找不到指定列:teacher.username


也许您必须在sql查询中使用或条件?


如果我想编辑代码,以便:如果教师登录-发送教师到教师表单。否则,如果学生登录-将学生发送到学生表单?在DBReader.Read()中读取登录名和密码,并用我不太熟悉的c#代码再次验证。请阅读。你能给我一个示例代码让我开始吗?应该是这样的while(DBReader.Read()){var teacherLogin=DBReader.GetString(“数据库中的列的名称”);var teacherPass=DBReader.GetString(“数据库中的列的名称”);如果(teacherLogin==yourLogin&&teacherPass==yourPass){//it is teacher}//为普通用户添加相同的逻辑}我是否需要指定表,因为列名称“username”同时在教师和学生中
    using (MySqlConnection connection = new MySqlConnection("datasource=localhost;port=3306;database=project;username=root;password=***;"))
{
    MySqlCommand cmd = new MySqlCommand(@"SELECT  * FROM student, teacher 
     WHERE student.username = @userName AND student.password = @passWord 
     AND teacher.username = @teacherUser AND teacher.password = @teacherPass;");

    cmd.CommandType = CommandType.Text;
    cmd.Connection = connection;
    cmd.Parameters.AddWithValue("@userName", textboxUsername.Text);
    cmd.Parameters.AddWithValue("@passWord", texBoxPassword.Text);
    cmd.Parameters.AddWithValue("@teacherUser", textBoxTeacherUsername.Text);
    cmd.Parameters.AddWithValue("@teacherPass", textBoxTeacherPassword.Text);
    connection.Open();    
    MySqlDataReader DBReader;
    DBReader = cmd.ExecuteReader();
    cmd.Connection = connection;
    int check = 0;
    while (DBReader.Read())
    {
        check = check + 1;
    }
    if (check == 1)
    {
        MessageBox.Show(" Login Successfull");
        this.Hide();
        Test ss = new Test();
        ss.Show();
    }
    else
    {
         MessageBox.Show("Username or Password Incorrect.  Try Again please");
    }
    connection.Close();

}
     MySqlCommand cmd = new MySqlCommand("SELECT * FROM student, teacher WHERE (student.username = @userName AND student.password = @passWord) OR (teacher.username = @teacherUser AND teacher.password = @teacherPass);");
            cmd.CommandType = CommandType.Text;
            cmd.Connection = connection;
            cmd.Parameters.AddWithValue("@userName", textboxUsername.Text);
            cmd.Parameters.AddWithValue("@passWord", texBoxPassword.Text);
            cmd.Parameters.AddWithValue("@teacherUser", textboxUsername.Text);
            cmd.Parameters.AddWithValue("@teacherPass", texBoxPassword.Text);
            connection.Open();
            MySqlDataReader DBReader;
            cmd.Connection = connection;
            DBReader = cmd.ExecuteReader();
            int check = 0;
            while (DBReader.Read())
            {
                var teacherLogin = DBReader.GetString("teacher.username");
                var teacherPass = DBReader.GetString("teacher.password");
                var studentLogin = DBReader.GetString("student.username");
                var studentPass = DBReader.GetString("student.password");

                if (teacherLogin == textboxUsername.Text && teacherPass == texBoxPassword.Text)
                {
                    MessageBox.Show("Login Successfull!");

                    this.Hide();
                    Registration ss = new Registration();
                    ss.Show();
                }
                else if (studentLogin == texBoxPassword.Text && studentPass == texBoxPassword.Text)
                {
                    MessageBox.Show(" Login Successfull");

                    this.Hide();
                    Test ss = new Test();
                    ss.Show();
                }
                else
                {
                    MessageBox.Show("Username or Password Incorrect.  Try Again please");
                }

            }
SELECT * FROM student, teacher WHERE (student.username = @userName AND student.password = @passWord) OR (teacher.username = @teacherUser AND teacher.password = @teacherPass)