2014-10-01 11 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

相關問題