Messagebox没有显示

时间:2015-02-21 11:12:41

标签: c# mysql

我使用mysql创建了一个数据库,在我的form1上有两个文本框用户名和密码以及一个登录按钮。我的程序从数据库中检索信息,如果数据匹配则登录,否则会弹出一个消息框,告知密码的用户名是错误的(它没有显示)

发布代码前

: 我已宣布:以下

public int logid;
public int loginid(strign name) // to set logid the id of the user
public void loginfun();        //  checks the data and logs in if id and password matches, else should give an error message.

我的代码如下:

public int loginid(string name)
    {
        string conString = "Server=localhost;Database=ozturk;Uid=_____;pwd=_____";
        MySqlConnection mcon = new MySqlConnection(conString);
        string getid = "SELECT username,id from ozturk.admin WHERE username='" + name + "'";

        MySqlCommand cmd = new MySqlCommand(getid, mcon);
        MySqlDataReader myReader;

        mcon.Open();
        myReader = cmd.ExecuteReader();
        while (myReader.Read())
        {
            if (myReader["username"].ToString() == name)
            {
                return Convert.ToInt32(myReader["id"].ToString());
            }
        }
        return 0;

    }


public void loginfun()
    {
        string conString ="Server=localhost;Database=ozturk;Uid=_____;pwd=_____";
        MySqlConnection mcon = new MySqlConnection(conString);
        string selectCommand = "SELECT * FROM ozturk.admin";
        MySqlCommand cmd = new MySqlCommand(selectCommand,mcon);

        MySqlDataReader myReader;
        mcon.Open();
        myReader = cmd.ExecuteReader();

        while (myReader.Read())
        {
            try
            {
                if (myReader["username"].ToString() == txtuserid.Text && myReader["password"].ToString() == txtpassword.Text)
                {
                    // set logid to userid
                    logid = loginid(myReader["username"].ToString());
                    string updateCommand = "UPDATE ozturk.admin SET status = 'on' WHERE id='" + logid + "' ";

                    MySqlConnection newcon = new MySqlConnection(conString);
                    MySqlCommand cmd2 = new MySqlCommand(updateCommand, newcon);
                    MySqlDataReader myReader2;
                    newcon.Open();
                    myReader2 = cmd2.ExecuteReader();

                    Anasayfa anasayf = new Anasayfa();
                    anasayf.Show();
                    this.Hide();
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Username or Password is incorrect");
                throw;
            }
        }
    }

问题是:如果用户名和密码正确,我的程序会登录并打开另一个表单,但如果用户名或密码错误则不会执行任何操作,我在这里缺少什么?任何帮助表示赞赏 感谢

2 个答案:

答案 0 :(得分:0)

我已经解决了这个问题,这就是我所做的:我已将我的登录功能从void更改为bool:这是最新的代码:

public bool loginfun()
    {
        string conString ="Server=localhost;Database=ozturk;Uid=_____;pwd=_____";
        MySqlConnection mcon = new MySqlConnection(conString);
        string selectCommand = "SELECT * FROM ozturk.admin";
        MySqlCommand cmd = new MySqlCommand(selectCommand,mcon);

        MySqlDataReader myReader;
        mcon.Open();
        myReader = cmd.ExecuteReader();

        while (myReader.Read())
        {
            try
            {
                if (myReader["username"].ToString() == txtuserid.Text && myReader["password"].ToString() == txtpassword.Text)
                {
                    // giriş yapan kişinin id si
                    logid = loginid(myReader["username"].ToString());
                    string updateCommand = "UPDATE ozturk.admin SET status = 'on' WHERE id='" + logid + "' ";

                    MySqlConnection newcon = new MySqlConnection(conString);
                    MySqlCommand cmd2 = new MySqlCommand(updateCommand, newcon);
                    MySqlDataReader myReader2;
                    newcon.Open();
                    myReader2 = cmd2.ExecuteReader();


                    return true;
                }

            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message);
                throw;
            }
        }
        return false;

    }

并在登录按钮内部,代码如下:

if (loginfun() == true)
        {
            Anasayfa anasayf = new Anasayfa();
            anasayf.Show();
            this.Hide();
        }
        else
        {
            MessageBox.Show("Username or Password is incorrect");
        }

感谢大家的提示

答案 1 :(得分:-1)

这是你的代码:

 bool flag = false;
    while (myReader.Read())
            {
                try
                {
                    if (myReader["username"].ToString() == txtuserid.Text && myReader["password"].ToString() == txtpassword.Text)
                    {
                        // set the flag to true, is credentials match and break from the loop
                        flag = true;
                        break;
                        // set logid to userid
                        logid = loginid(myReader["username"].ToString());
                        string updateCommand = "UPDATE ozturk.admin SET status = 'on' WHERE id='" + logid + "' ";

                        MySqlConnection newcon = new MySqlConnection(conString);
                        MySqlCommand cmd2 = new MySqlCommand(updateCommand, newcon);
                        MySqlDataReader myReader2;
                        newcon.Open();
                        myReader2 = cmd2.ExecuteReader();

                        Anasayfa anasayf = new Anasayfa();
                        anasayf.Show();
                        this.Hide();
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Username or Password is incorrect");
                    throw;
                }
            }
            if(!flag)
            {
                MessageBox.Show("Username or Password is incorrect");
            }