Member 12801567 Ответов: 1

Получение ошибки в точке с запятой при попытке подключения к базе данных mysql


Ниже приведен код, который я написал


частный: системный::пустота обработчика button1_click(система::объект^ отправителя, класса System::EventArgs в^ е) {
String^ constring=L " datasourse=localhost;port=3306;username=root;password=пароль";

MySqlConnection^ conDataBase=gcnew MySqlConnection(constring);<-(он показывает, что точка с запятой с красной линией, состояние проблемы, что исключение аргумента было необработанным, ключевое слово не поддерживается, имя параметра: datasource)

MySqlCommand^ cmdDataBase=gcnew MySqlCommand ("select * from login_acc. login where Username='"+this- & gt;textBox1+ "' and Password='"+this - & gt;textBox2-> Text+"';", conDataBase);
MySqlDataReader^ myReader;
пробовать{
conDataBase- & gt;открыть();
myReader=cmdDataBase- & gt;ExecuteReader();
int count=0;
while (myReader- & gt;читать()){
count=count+1;

}
если (count==1){
MessageBox:: Show ("Войдите!");
}
else if (count> 1){
MessageBox:: Show ("Fail");
}
ещё
Функции MessageBox::показать("пожалуйста, проверьте ваш эксплуатациейнаименование и пароль.");
}catch(исключение^ex){
MessageBox:: Show(ex - & gt;Message);
}
}

Что я уже пробовал:

Я пробовал искать в интернете, но не могу найти решения

1 Ответов

Рейтинг:
9

OriginalGriff

Это потому, что "источник данных" пишется с буквой "С".":

String^ constring=L"datasourse=localhost;port=3306;username=root;password=password";
                            ^
                            |

Но не нужно жестко кодировать строки подключения, это означает, что вы должны менять свой код каждый раз, когда вы его выпускаете. Это означает повторное тестирование, и на этот раз вы тестируете его по производственной базе данных. Опасно!

И еще пара вещей:
1) Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.
2) имя элемента управления не совпадает с его текстовым свойством: ваше имя пользователя всегда будет "System.Окна.Управления.Текстовый"...
3) Никогда не храните пароли в открытом тексте - это серьезная угроза безопасности. Здесь есть некоторая информация о том, как это сделать: Хранение паролей: как это сделать.[^]- это в C#, но все это по-прежнему применимо.


Member 12801567

Thx для Советов и советов, я просто новичок, я улучшу его

OriginalGriff

Мы все должны с чего-то начать! :Д