Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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_Winforms_Connection String - Fatal编程技术网

C# 启动第二个表单后关闭数据库连接

C# 启动第二个表单后关闭数据库连接,c#,mysql,winforms,connection-string,C#,Mysql,Winforms,Connection String,在我的应用程序中,我有两个表单。一个用于登录,另一个用于实际应用程序。但成功登录后,登录表单建立的数据库连接不会终止。关闭此连接的唯一方法是关闭两个窗体。但我想在成功登录后尽快关闭登录表单建立的数据库连接。这是我的密码 private void button2_Click(object sender, EventArgs e) { try { string mysqlconnection = stri

在我的应用程序中,我有两个表单。一个用于登录,另一个用于实际应用程序。但成功登录后,登录表单建立的数据库连接不会终止。关闭此连接的唯一方法是关闭两个窗体。但我想在成功登录后尽快关闭登录表单建立的数据库连接。这是我的密码

private void button2_Click(object sender, EventArgs e)
        {


            try
            {


            string mysqlconnection = string.Format("datasource='{0}';username=uwcentrallogin;port=3306;password=**************;Connect Timeout=20000;Command Timeout=28800", serverip.Text);
            MySqlConnection myconn = new MySqlConnection(mysqlconnection);
            MySqlCommand Selectcommand = new MySqlCommand("select * from wartif.userdata where username='" + this.adminusername.Text.Trim() + "'and adminpassword= '" + this.passwordtext.Text.Trim() + "' ; ", myconn);

            MySqlDataReader myreader;
            myconn.Open();
            myreader = Selectcommand.ExecuteReader();
            int count = 0;

            while (myreader.Read())
            {
                count = count + 1;

            }

            if (count == 1)
            {



                this.Hide();
                adminview f2 = new adminview(serverip.Text, adminusername.Text, portnumberbox.Text, defdatabase.Text);
                f2.ShowDialog();
                this.Close();
                myconn.Close();

            }

            else if (count > 1)
            {


                label4.Text = "duplicatie users exsist ";
            }

            else

            label4.Text = "Not a privileged user";
            label4.ForeColor = Color.Orange;
            errpan.BackColor = Color.Orange;


            myconn.Close();

        }

        catch 
        {


            label4.Text = "mysql database connection is not avialable";
        }



    }

    private void button3_Click(object sender, EventArgs e)
    {
        this.Close();
    }


    private void button4_Click(object sender, EventArgs e)
    {


        appconfigsave();

        label4.Text = "Your changes has been saved";
        label4.ForeColor = Color.Orange;
        errpan.BackColor = Color.Orange;

    }
加:

在你的台词下面:

myconn.Close();
我还建议您使用语句查看

更多信息

示例

        if (count == 1)
        {
            this.Hide();
            adminview f2 = new adminview(serverip.Text, adminusername.Text, portnumberbox.Text, defdatabase.Text);
            myconn.Close();
            myconn.Dispose();
            f2.ShowDialog();
            this.Close();
        }

这根本不是对你的问题的回答,而是:真正命名你的标签和按钮,如果你的应用程序变得更大,你将失去对按钮/标签的控制。此外,它还将使您的代码更加清晰。在SQL命令中使用参数可防止SQL注入。@Sybren感谢您的建议,我将其更改为参数化sqlI,我会说您需要移动行
myconn.Close()以上
f2.ShowDialog()
并将我的
Dispose()
行添加到
Close()
下面。我之所以这样说,是因为如果对话框
f2
在初始化时尝试使用SQLConnection,它将无法使用,因为您尚未关闭/释放连接。请参见编辑中的示例
        if (count == 1)
        {
            this.Hide();
            adminview f2 = new adminview(serverip.Text, adminusername.Text, portnumberbox.Text, defdatabase.Text);
            myconn.Close();
            myconn.Dispose();
            f2.ShowDialog();
            this.Close();
        }