2014-10-01 43 views
0

我刚刚注意学习C#2周前,所以我不知道多少,但现在我只是想让我的第一个程序我不想我真的不关心ATM内部的安全漏洞,因为随着时间的推移,当我知道一个更好的解决方案时,我会解决这些问题。SqlConnection,获取错误,无法连接到数据库(发生在System.Data.dll)

所以我得到这个错误:

An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll 

Additional information: A severe internal connection error has occurred. 

而且我一直坐在这个错误2天,现在修改我的代码和搜索互联网,没有运气的解决方案。所以我转过来,因为我看到这里有一些专家。

代码错误:

 using (SqlConnection con = new SqlConnection("server=SERVERIP,3306;Integrated Security=True;database=data;uid=USER;password=PASS")) 
     { 
      con.Open(); //ERROR HERE 

      using (SqlCommand cmd = new SqlCommand("insert into info(Datum,Timmar,Rast) Values(@Datum,@Timmar,@Rast)", con)) 
      { 
       cmd.Parameters.AddWithValue("@Datum", textBox1.Text); 
       cmd.Parameters.AddWithValue("@Timmar", textBox2.Text); 
       cmd.Parameters.AddWithValue("@Rast", textBox3.Text); 
       cmd.ExecuteNonQuery(); 
       MessageBox.Show("Sparat!"); 
      } 
     } 

所以基本上我想做这个节目做的是让用户键入到文本框被保存在数据库中的数据。

当我用完整的大写字母输入单词时,我的意思是说它是其他的东西,例如。 IP和密码等

+1

看起来不是代码问题。我的猜测是外部的东西搞乱了你的连接,.NET库或系统库。在另一台机器上尝试代码。 – 2014-10-01 20:11:13

+0

我相信这个问题是在连接字符串中 “服务器= SERVERIP,3306;集成安全性= TRUE;数据库=数据; UID =用户;密码= PASS” 它应该是在格式 SERVERIP应该是一个IP地址类似于10.100.10.22 – 2014-10-01 20:13:17

+1

@DanHunex,我很确定这只是一个示例字符串,再加上它不一定是IP,它也可以是机器名称。 – Habib 2014-10-01 20:15:19

回答

0

您使用了错误的连接类有。您正试图与MySQL数据库交谈,就好像它是SQL Server数据库一样。您需要使用MySqlConnection,而不是SqlConnectionMySqlConnectionMySQL Connector/NET,它也可以通过NuGet安装。

您的代码应该如下所示。

using (MySqlConnection con = new MySqlConnection("server=SERVERIP;port=3306;database=data;uid=USER;password=PASS")) 
    { 
     con.Open(); // Hopefully no error here any more 

     using (MySqlCommand cmd = new MySqlCommand("insert into info(Datum,Timmar,Rast) Values(@Datum,@Timmar,@Rast)", con)) 
     { 
      cmd.Parameters.AddWithValue("@Datum", textBox1.Text); 
      cmd.Parameters.AddWithValue("@Timmar", textBox2.Text); 
      cmd.Parameters.AddWithValue("@Rast", textBox3.Text); 
      cmd.ExecuteNonQuery(); 
      MessageBox.Show("Sparat!"); 
     } 
    } 
+0

哇omg我不相信它的作品我试图解决这个问题这么久,我用错了连接类!我无法感谢你!对于有这个问题的人来说,这是解决方案,只需确保添加“port = 3306”,或者不管你的mysql端口是什么 – 2014-10-01 21:08:23

0

你有Integrated Security=trueuid=USER;password=PASS

如果您提供的用户名和密码,您不应该Integrated Security=true

+0

我没有编辑行“server = SERVERIP,3306; database = data; uid = USER; password = PASS”但不幸的是不工作 – 2014-10-01 20:36:14

相关问题