2017-02-16 134 views
0

我试图学习如何从一个C#应用程序访问数据库。 我写了这个简单的代码,以访问我在freemysqlhosting.com上托管的MySql数据库。它是一个非常简单的Windows窗体应用程序:它包含一个名为'login'的按钮,在按下时,应该将名为'username'(应该是“sampleUser”)的密码为'1234'的用户名放入。连接到SQL服务器挂在con.Open()

这是我曾尝试代码:

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连接。

即使我删除使用caluse内的所有代码,它也会冻结。如果我删除con.Open()它不会挂起,所以我认为这是导致问题的线路。

我试图寻找一个在互联网上的解决方案,并发现相当多的人有同样的问题,但没有给出解决方案,或给出的解决方案对我的情况没有影响。

帮助将不胜感激,如果我犯了任何错误,请对英文错误表示歉意。

+0

数据库服务器,名称和密码,一切尽在发布代码。我会建议在公共论坛上删除此内容。 –

+0

这个数据库是我为测试而制作的免费数据库。如果有人损坏它,我可以创建一个新的。我希望尽可能简单地帮助我,而不会泄露任何私人信息。谢谢您的好意。 – hrsidkpi

+3

您连接到的主机名称表示它是MySQL托管的事实,但您尝试与MSSQL连接的详细信息可能是此处的问题... – DavidG

回答

-2

用这种方式

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() }; 
       } 
      } 
     }