与 Sql 服务器的连接挂在 con.Open() [重复]
Posted
技术标签:
【中文标题】与 Sql 服务器的连接挂在 con.Open() [重复]【英文标题】:Connection to Sql server hang on con.Open() [duplicate] 【发布时间】: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 来获取我需要的连接字符串。 【参考方案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() ;
【讨论】:
以上是关于与 Sql 服务器的连接挂在 con.Open() [重复]的主要内容,如果未能解决你的问题,请参考以下文章