2016-07-02 83 views
2

不知道爲什麼每次嘗試連接時都會收到錯誤。我嘗試了很多東西。當我手動連接時輸入錯誤的密碼時,它表示訪問未授予或任何我知道它連接,但當它連接時,我得到這個奇怪的錯誤。由於KeyNotFoundException而無法連接到MySQL數據庫

類型 「System.Collections.Generic.KeyNotFoundException」的未處理的異常發生在 mscorlib.dll中其他信息:在 詞典中的給定的鍵不存在。

對於本地主機它有效當我有這個連接字符串。

server=localhost; port=3306; USER ID=root; password=***; database=database; 

但是,當我更改服務器用戶ID和密碼它決定不工作。

例外情況引發cn.Open();

 private void button1_Click(object sender, EventArgs e) 
    { 
     MySqlConnection cn = new MySqlConnection(); 
     cn.ConnectionString = "server=db4free.net ;port=3306; 
           user=goof; password=pwd; database=s;"; 
     cn.Open(); 
     MySqlCommand cmd = new MySqlCommand("select * from users where 
              username = '" 
              + textBox1.Text + "', 
              and password = '" 
              + textBox2.Text + "'", cn); 
     MySqlDataReader dr; 
     dr = cmd.ExecuteReader(); 
     int count = 0; 

     while(dr.Read()) 
     { 
      count += 1; 
     } 
     if(count == 1) 
     { 
      MessageBox.Show("success"); 
     } 
     else 
     { 
      MessageBox.Show("error"); 
     } 
    } 
+0

只要我知道,MySQL使用「U​​id and Pwd」作爲用戶名和密碼,而不是連接字符串中的「user和password」。 –

+0

亞我已經嘗試過,所以現在失去了: –

+0

試試這個> http://stackoverflow.com/questions/2176329/error-in-mysql-connection-the-given-key-was-not-present-in-the-dictionary錯誤的連接字符串「pooling = false」 –

回答

1

的問題是user=goof場應該是user id=goof

更改連接字符串到這一點:

cn.ConnectionString = "server=db4free.net ;port=3306; USER ID=goof; password=pwd; database=s;"; 
0

嘗試使用「用戶ID」或「UID」,而不只是「用戶」,並讓我們知道,如果它做的工作!

+0

沒有任何建議奏效。即時通訊很困惑,爲什麼這不會工作。 –