2016-07-02 2 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은 "Uid 및 Pwd"를 사용하여 사용자 이름과 암호를 사용하고 연결 문자열에는 "사용자 및 암호"를 사용하지 않습니다. –

+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

어떤 제안도 효과가 없었습니다. 임 매우 왜 혼란 스러워요. –

관련 문제