【问题标题】:Connection to Sql server hang on con.Open() [duplicate]与 Sql 服务器的连接挂在 con.Open() [重复]
【发布时间】:2017-07-05 15:09:22
【问题描述】:

我正在尝试学习如何从 C# 应用程序访问数据库。 我编写了这个简单的代码来访问我在 freemysqlhosting.com 上托管的 MySql 数据库。它是一个非常简单的 Windows 窗体应用程序:它包含一个名为“登录”的按钮,按下该按钮后,应将密码为“1234”的用户名放在名为“用户名”的文本框中(应为“sampleUser”)。

这是我尝试过的代码:

private void login_Click(object sender, EventArgs e)
    {
        string connectionString = "server=sql11.freemysqlhosting.net;user id=*********;database=sql11158998;password=********;";
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            SqlCommand cmd = new SqlCommand("SELECT * FROM users WHERE password = 'hrsidkpi'", con);
            con.Open();
            SqlDataReader reader = cmd.ExecuteReader();
            try
            {
                while (reader.Read())
                {
                    username.Text = "" + reader[0];
                }
            }
            finally
            {
                reader.Close();
            }
        }
    }

但是,当我按下按钮时,应用程序挂起。不会引发异常/错误。我把它打开了几分钟,什么也没发生。 我知道连接正在工作,并且连接字符串中的详细信息是正确的,因为我使用 Visual Studio 的“数据源”与服务器建立了 DataSet 连接。

即使我删除了 using caluse 中的所有代码,它也会冻结。如果我删除 con.Open() 它不会挂起,所以我相信这是导致问题的行。

我尝试在网上寻找解决方案,发现有不少人有同样的问题,但没有给出解决方案,或者给出的解决方案对我的情况没有影响。

非常感谢您的帮助,如果我犯了英文错误,我们深表歉意。

【问题讨论】:

  • 数据库服务器、名称和密码都在您发布的代码中。我建议在公共论坛上删除它。
  • 这个数据库是我为测试而制作的免费数据库。如果有人损坏它,我可以创建一个新的。我更喜欢尽可能轻松地帮助我,不会泄露任何私人信息。不过还是谢谢。
  • 您连接的主机名表示它是 MySQL 托管,但您尝试连接 MSSQL 详细信息的事实可能是这里的问题...
  • @RobAston:删除这里并没有多大帮助,因为有修订历史记录
  • MSSQL 详细信息是什么意思?在连接字符串中?我使用 connectionstrings.com 来获取我需要的连接字符串。

标签: c# mysql database-connection connection-string


【解决方案1】:

这样使用

    public string _ConexaoBcoDados = "Data Source=10.10.40.12\\DESENV;Initial Catalog=control_db;Uid=usr_desenv14; pwd=12345678;";

        sql.AppendLine("select login_rede,perfil_id from protocol_tb with(nolock) ");

        using (var conn = new SqlConnection(_ConexaoBcoDados))
        {
            var cmd = new SqlCommand(sql.ToString(), conn);
            conn.Open();
            using (var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                while (reader.Read())
                {
                    valores = new string[] { reader["login_rede"].ToString(), reader["perfil_id"].ToString() };
                }
            }
        }

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多