Соединение должно быть действительным и открыть ядро ​​asp .net - PullRequest
0 голосов
/ 13 февраля 2019

Это мой IActionResult, я работаю с MySQL, предполагается, что он должен регистрировать пользователя, но по какой-то причине каждый раз, когда я пытаюсь его выполнить, я получаю сообщение «Соединение должно быть действительным и открытым». Я проверилстрока подключения и она действительна, и я тоже ее открываю, кто-нибудь может мне помочь?

Да, я знаю, что это подвержено SQL-инъекции, поэтому не нужно мне это говорить.

 public IActionResult Maak()
        {
            string conn = "server=localhost;user id=Job;password=SamplePassword;database=kingdom_of_uluth";
            MySqlConnection con = new MySqlConnection(conn);
            string userName = HttpContext.Request.Query["usernamesignup"];
            string password = HttpContext.Request.Query["passwordsignup"];
            con.ConnectionString = conn;
            con.Open();
            try
            {
                MySqlCommand com = new MySqlCommand($"INSERT INTO account(username, password, lastlogin) VALUES({userName}, {password}, now());");
                com.ExecuteReader();
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
            con.Close();
            return View("RegisterOK");
        }

Я попробовал решение, предложенное Хенком Моллема, но затем я получил еще одну ошибку, которая

Исключение: MySql.Data.MySqlClient.MySqlException в MySql.Data..dll Неизвестный столбец «asdasd» в «списке полей»

, в котором asdasd - это имя пользователя, которое я ввел в поле имени пользователя

1 Ответ

0 голосов
/ 13 февраля 2019

В вашем фрагменте кода есть две проблемы:

  1. Объект соединения должен быть передан в объект команды для связи команды с соединением, например:
MySqlCommand com = new MySqlCommand("your query", con);

См. Соединение должно быть действительным и ошибка открытия .

Вам не хватает кавычек вокруг значений в операторе VALUES (...) в запросе SQL, например '{userName}'.Однако у вас не возникло бы этой проблемы, если бы вы просто использовали правильные параметры команды для своего запроса, используя com.Parameters.AddWithValue(), вместо того, чтобы объединять значения в запросе, который обеспечивает внедрение SQL.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...