【问题标题】:Connection must be valid and open asp .net core连接必须有效且打开 asp .net core
【发布时间】:2019-02-13 11:53:49
【问题描述】:

这是我的 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");
        }

我已经尝试了 Henk Mollema 建议的解决方案,但随后我收到另一个错误

抛出异常:MySql.Data.dll 中的“MySql.Data.MySqlClient.MySqlException” “字段列表”中的未知列“asdasd”

其中 asdasd 是我在用户名字段中输入的用户名

【问题讨论】:

  • @HenkMollema 试过了,还是不行。编辑了你的问题
  • 尝试在VALUES (...) 语句中的值周围添加引号。例如。 '{userName}'。如果您只是使用com.Parameters.AddWithValue() 为您的查询使用正确的命令参数,而不是连接查询中的值,您就不会遇到这个问题。

标签: c# mysql asp.net asp.net-core


【解决方案1】:

你的代码sn-p有两个问题:

  1. 应将连接对象传递给命令对象以将命令与连接关联,例如:
MySqlCommand com = new MySqlCommand("your query", con);

也请参阅Connection must be valid and open error

  1. SQL 查询中VALUES (...) 语句中的值周围缺少引号,例如'{userName}'。但是,如果您只是使用com.Parameters.AddWithValue() 为您的查询使用正确的命令参数,而不是连接查询中的值以启用 SQL 注入,那么您就不会遇到这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-09
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    相关资源
    最近更新 更多