c# - 尝试连接到远程地址数据库时出现超时错误

标签 c# mysql

我不断收到超时错误,只有几次我的代码有效。我在这个论坛上读到我必须在 mysql 之前使用“using”。所以我尝试添加它,但仍然没有成功。也许我用错了?留下我最后一次与数据库的连接而不是“使用”,这样你们就可以看到它一开始是怎样的

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace WindowsFormsApplication4
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
            FillCombo();
        }
        void FillCombo()
        {
            string dbcon = "SERVER=IP;DATABASE=mudiw_test;UID=mudiw_test;PASSWORD=PASS";
            string Query = "select * from mudiw_test.Registration ;";
            using (MySqlConnection conDatabase = new MySqlConnection(dbcon))
            {
                using (MySqlCommand cmDatabase = new MySqlCommand(Query, conDatabase))
                {
                    MySqlDataReader myReader;
                    try
                    {
                        conDatabase.Open();
                        myReader = cmDatabase.ExecuteReader();
                        while (myReader.Read())
                        {
                            string sName = myReader.GetString("Name");
                            comboBox1.Items.Add(sName);
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string dbcon = "SERVER=IP;DATABASE=mudiw_test;UID=mudiw_test;PASSWORD=PASS";
            string Query = "select * from mudiw_test.Registration where Name='" + comboBox1.Text + "' ;";
            using (MySqlConnection conDatabase = new MySqlConnection(dbcon))
            {
                using (MySqlCommand cmDatabase = new MySqlCommand(Query, conDatabase))
                {
                    MySqlDataReader myReader;
                    try
                    {
                        conDatabase.Open();
                        myReader = cmDatabase.ExecuteReader();
                        while (myReader.Read())
                        {
                            string sName = myReader.GetString("Name");
                            string sId = myReader.GetString("ID");
                            string sEmail = myReader.GetString("Email");
                            string sAddress = myReader.GetString("Address");
                            string sPhone = myReader.GetString("Phone");
                            string sVisits = myReader.GetString("Visits");
                            name.Text = sName;
                            id.Text = sId;
                            email.Text = sEmail;
                            address.Text = sAddress;
                            phone.Text = sPhone;
                            address.Text = sAddress;
                            visits.Text = sVisits;
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox2.SelectedItem == "Mantenimiento")
            {
                int value;
                if (Int32.TryParse(visits.Text, out value))
                {
                    if (value < 3)
                    {
                        price.Text = "150";
                        total.Text = "150";
                        discount.Text = "0%";
                    }
                    else if (value >= 3 && value <= 6)
                    {
                        price.Text = "150";
                        total.Text = "127.50";
                        discount.Text = "15%";
                    }
                    else if (value >= 7)
                    {
                        price.Text = "150";
                        total.Text = "112.50";
                        discount.Text = "25%";
                    }
                }
            }
        }

        private void tabPage1_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string dbcon = "SERVER=IP;DATABASE=mudiw_test;UID=mudiw_test;PASSWORD=PASS";
            string Query = "insert into mudiw_test.Registration (Name,ID,Email,Address,Phone) values('" + this.name.Text + "','" + this.id.Text + "','" + this.email.Text + "','" + this.address.Text + "','" + this.phone.Text + "');";
            MySqlConnection conDatabase = new MySqlConnection(dbcon);
            MySqlCommand cmDatabase = new MySqlCommand(Query, conDatabase);
            MySqlDataReader myReader;
            try
            {
                conDatabase.Open();
                myReader = cmDatabase.ExecuteReader();
                MessageBox.Show("Saved");
                while (myReader.Read())
                {

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

最佳答案

超时与using语句无关;将连接包装在 using 中只是确保在使用完连接后将其释放。超时可能意味着您的计算机和数据库之间存在网络连接问题,或者您提供了错误的服务器名称。

关于c# - 尝试连接到远程地址数据库时出现超时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22002027/

相关文章:

c# - 无法反序列化当前 JSON 对象(空数组)

c# - 如何通过 C# 在 GPO 中创建 WMI 筛选器

mysql - 如何编写一个 mysql 子查询,其中一个表根据返回一行的表返回多行?

php - 将数组发送到 MySQL

php - 通过长队列运行多个工作人员

c# - BackgroundDownloader 4GB 限制

c# - LINQ查询查找对象,其数据变量与输入变量最接近

c# - 我的应用程序的内部编码

mysql - 在相互引用的表中使用外键的正确方法是什么

mysql - 将从不同查询返回的行追加到一个查询中