2013-05-13 3 views
0

я делал простую форму окна приложения, чтобы зарегистрировать некоторые человек в базе данных, поэтому я сделал класс соединения есть это:MySql соединение в C#

public void Query_send(string cmd) 
    { 


     String config = "server=127.0.0.1;uid=root;database=bdcliente;"; 

     MySqlConnection conn = new MySqlConnection(config); 
     MySqlCommand comm = new MySqlCommand(cmd, conn); 
     try 
     { 
      conn = new MySql.Data.MySqlClient.MySqlConnection(); 
      conn.ConnectionString = config; 
      conn.Open(); 
     } 
     catch 
     { 
      MessageBox.Show("Error when connecting to the database!"); 
     } 
     finally 
     { 
      conn.Close(); 
     } 
    } 

, а затем на кнопке, чтобы дать информацию для MySql я использую это:

 private void button1_Click(object sender, EventArgs e) 
    { 
     Query instance = new Query(); 
     instance.Query_send("INSERT INTO `tbcliente`(`codCliente`, `name`, `cpf`, `telephone`) VALUES ([" + textBox1 + "],[" + textBox2 + "],[" + textBox3 + "],[" + textBox4 + "])"); 
    } 

я всегда получаю сообщение об ошибке с подключением, когда я нажимаю кнопку регистра, может кто-нибудь мне помочь или дать мне ссылку на учебник, который учит правильный способ сделать это? Спасибо, Яго.

+2

Какое точное Исключение, которое бросают? –

+1

Предупреждение об уязвимости SQL-инъекции. Вы также должны использовать свойство Text для своих экземпляров TextBox, а не сами объекты. –

+0

У вас есть пользователь root? – Rafael

ответ

0

Я предполагаю, что вам нужно обернуть результаты предложения VALUES одинарными кавычками, поскольку SQL, который вы генерируете, будет недействительным.

VALUES ('" + textbox1 + "') 

Кронштейны требуются только при обращении к названиям таблиц или столбцов. Не тогда, когда вы имеете в виду строковые литералы.

+0

Я попробовал это, проблема в том, что программа не может подключиться к серверу mysql; /, я попытаюсь использовать другую, но я все равно буду читать это –

0

Нечетный вопрос, но вы пробовали применить пароль к базе данных? В зависимости от версии MySQL у меня возникли проблемы с тем, что пароль root не назначен (на локальном компьютере вы можете быть в безопасности и просто назначать «root» в качестве пароля). Другой вариант - создать учетную запись пользователя с разрешениями и попробовать установить соединение с этими учетными данными.

Не уверен, что это поможет, но это процесс устранения.

Также не уверен, что метод работает, но даже если он подключен, в базе данных не было команды выполнения.

public void Query_send(string cmd) 
{ 


    String config = "server=localhost;uid=root;database=bdcliente;"; 
    MySqlConnection conn = new MySqlConnection(config); 
    MySqlCommand comm = new MySqlCommand(cmd, conn); 

    try 
    { 
     conn.Open(); 
     comm.ExecuteNonQuery(); '--this was missing 
    } 
    catch 
    { 
     MessageBox.Show("Error when connecting to the database!"); 
    } 
    finally 
    { 
     conn.Close(); 
    } 
} 
Смежные вопросы