【问题标题】:Connection error after update mysql value C#更新mysql值C#后连接错误
【发布时间】:2020-09-29 19:27:38
【问题描述】:

所以我的想法是一旦用户登录,它将在我的 mysql 中为另一个表和在线值添加 +1。我已经完成了如下代码。一旦我有调试。我已经插入了用户名和密码,但是一旦我按下登录按钮,它就会显示错误连接。我确定我在代码中做错了,但无法对其进行排序。所以我想从你们那里得到帮助。谢谢

        private void loginBtn_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtUsername.Text != "" && txtPassword.Text != "")
                {

                    con.Open();
                    string query = "SELECT id,username,password,email,fullname,company,uploads,avatar,account_type FROM users WHERE username ='" + txtUsername.Text + "' AND password ='" + txtPassword.Text + "'";
                    MySqlDataReader row;
                    row = con.ExecuteReader(query);
                    if (row.HasRows)
                    {
                        while (row.Read())
                        {
                            Properties.Settings.Default.username = row["username"].ToString();
                            Properties.Settings.Default.email = row["email"].ToString();
                            Properties.Settings.Default.fullname = row["fullname"].ToString();
                            Properties.Settings.Default.company = row["company"].ToString();
                            Properties.Settings.Default.uploads = row["uploads"].ToString();
                            Properties.Settings.Default.user_avatar = row["avatar"].ToString();

                            MySqlCommand newcmd = new MySqlCommand("UPDATE company SET online = online + 1 WHERE name = '" + row["company"].ToString() + "'");

                            try
                            {
                                newcmd.ExecuteNonQuery();
                            }
                            catch (MySqlException ex)
                            {
                                con.Close();
                                MessageBox.Show(ex.Number.ToString() + " -> " + ex.Message.ToString());
                                return;
                            }
                        }
                        this.Hide();
                        dashboard dash = new dashboard();
                        dash.Show();
                    }
                    else
                    {
                        MessageBox.Show("Nie znaleziono użytkownika", "Information");
                    }
                }
                else
                {
                    MessageBox.Show("Nazwa użytkownika lub hasło jest nie poprawne", "Information");
                }
            }
            catch
            {
                MessageBox.Show("Błąd połączenia", "Information");
            }

【问题讨论】:

  • 什么是异常以及您在哪一行得到它?

标签: c# mysql visual-studio authentication


【解决方案1】:

对于您的问题,您登录时出现连接错误。

错误可能是已经有一个打开的数据读取器与此连接关联

必须关闭,所以关闭数据读取器连接。

你可以试试下面的代码来获取它。

     private void btn_Submit_Click(object sender, EventArgs e)
        {

            conn.Open();
            try
            {
                if (txtUsername.Text != "" && txtPassword.Text != "")
                {


                    string query = "SELECT id,username,password,email,fullname,company,uploads,avatar,account_type FROM users WHERE username ='" + txtUsername.Text + "' AND password ='" + txtPassword.Text + "'";
                    MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.ExecuteScalar();
                    MySqlDataReader row;
                    row = cmd.ExecuteReader();
                    string company=null;
                    if (row.HasRows)
                    {
                        while (row.Read())
                        {
                            Properties.Settings.Default.username = row["username"].ToString();
                            Properties.Settings.Default.email = row["email"].ToString();
                            Properties.Settings.Default.fullname = row["fullname"].ToString();
                            Properties.Settings.Default.company = row["company"].ToString();
                            Properties.Settings.Default.uploads = row["uploads"].ToString();
                            Properties.Settings.Default.user_avatar = row["avatar"].ToString();
                            company = row["company"].ToString();

                            MessageBox.Show(row["company"].ToString(), "Note", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        row.Close();
                            cmd.CommandText = "UPDATE company SET online = online + 1 WHERE name = '" + company + "'";
                            try
                            {
                                cmd.ExecuteNonQuery();
                            }
                            catch (MySqlException ex)
                            {
                                MessageBox.Show(ex.Number.ToString() + " -> " + ex.Message.ToString());
                            }                
                        this.Hide();
                        dashboard dash = new dashboard();
                        dash.Show();

                    }
                    else
                    {
                        MessageBox.Show("Nie znaleziono użytkownika", "Information");
                    }
                }
                else
                {
                    MessageBox.Show("Nazwa użytkownika lub hasło jest nie poprawne", "Information");
                }
            }
            catch 
            {
                MessageBox.Show("Błąd połączenia", "Information");
            }
            finally
            {
                conn.Close();
            }
       }

结果:

【讨论】:

  • MySqlCommand cmd = new MySqlCommand(query, con); - 说无法从数据库转换为 MySql.Data.MySqlClient.MySqlConnection(到数据库的一般连接在哪里)
  • 根据您提供的错误信息,我无法重现您的错误信息,所以我不确定您的代码有什么问题,请提供详细的错误报告信息,以便我更好地理解问题是什么。
  • MySqlCommand 正在尝试查询它从数据库调用用户中选择表的位置,即这一行string query = "SELECT id,username,password,email,fullname,company,uploads,avatar,account_type FROM users WHERE username ='" + txtUsername.Text + "' AND password ='" + txtPassword.Text + "'";,但新命令无法打开另一个连接?在线MySqlCommand cmd = new MySqlCommand(query, conn);
  • 您的问题可能是 MySQL 数据库连接错误。您可以参考以下网站编写连接语句。这是链接:[connectionstrings.com/mysql],在这个网站,你可以参考标准符号。
猜你喜欢
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
相关资源
最近更新 更多