2013-05-03 2 views
0

Я нашел много предложений, чтобы исправить это необработанное исключение, и я пробовал все, что мог найти (и понять). Это были часы, но все еще никаких результатов ... Я создал приложение форм Windows, которое запрашивает информацию о клиенте, и я пытаюсь вставить эту информацию в базу данных, созданную в MySQL. Это код, который, кажется, работает для всех, кроме меня:невозможно подключиться к любому из указанных узлов mysql. C#

public partial class Form1 : Form 
{ 

    private MySqlConnection mConn; 
    public Form1() 
    { 
     InitializeComponent(); 
     mConn = new MySqlConnection("Persist Security Info=False; server=localhost; database=xxxxxxx;uid=yyyyyyy;password=zzzzzzzz"); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     mConn.Open(); 
     if (mConn.State == ConnectionState.Open) 
     { 
      MySqlCommand command = new MySqlCommand("INSERT INTO client VALUES (" + textBox1.Text + ",' " + textBox2.Text + "', '" + textBox3.Text + "'," + textBox4.Text + ",' " + textBox5.Text + "')", mConn); 
      command.ExecuteNonQuery(); 
      mConn.Close(); 
     } 
     else 
      MessageBox.Show("Connection Failed!"); 
    } 
} 

Это текст исключение:

MySql.Data.MySqlClient.MySqlException (0x80004005): Не удалось подключиться к любому из указанных Хосты MySQL. ---> System.Net.Sockets.SocketException (0x80004005): запрошенный адрес недействителен в этом контексте [:: 1]: 3306 in ...

Если вы можете мне помочь, я буду очень признательна. Это мой первый год программирования, и до сих пор он прошел достаточно хорошо, но теперь я был «оставлен» в своем классе из-за этой повторяющейся ошибки. Заранее спасибо :)

+2

У вас есть уязвимость в SQL-инъекции. – SLaks

+0

Вы можете вызвать MySQL через утилиту командной строки? Если нет, следуйте сообщениям об ошибках, которые вы получите там. Это может быть так просто, как служба MySQL не работает (если вы работаете в Windows). Если вы можете подключиться через командную строку, проверьте [эту публикацию StackOverflow] (http://stackoverflow.com/questions/4655669/unable-to-connect-to-any-of-the-specified-mysql-hosts), что похоже на вашу проблему. Особенно обратите внимание на комментарий ниже принятого решения, в котором показано, как определить, какой порт прослушивает ваш MySQL. –

+0

Да, я могу вызвать MySQL через утилиту командной строки. И я уже пытался включить номер порта в строку подключения, на самом деле я пробовал много разных строк подключения. Через командную строку MySQL я смог подтвердить номер порта, и я подтвердил, что в моем брандмауэре для этого порта было создано исключение. –

ответ

3

Мой профессор смог найти проблему. По какой-то причине мой компьютер не может распознать термин localhost как IP-адрес 127.0.0.1, поэтому, когда я писал server = localhost в строке подключения, произошла ошибка. Когда я пробовал писать server = 127.0.0.1 все работало плавно. Надеюсь, это полезно.

Рабочая строка соединения:

"Persist Security Info=False;server=127.0.0.1;database=xx;uid=yy;password=zz" 
+0

Ну, в моем случае это не сработает ... Извините ... –

0

Проблема с установлением соединения с удаленным сайтом будет решен путем предоставления общедоступного IP этого DB вместо частного.

это поможет u. Попробуйте.

Смежные вопросы