【问题标题】:Syntax error in INSERT INTO command on Visual StudioVisual Studio 上的 INSERT INTO 命令中的语法错误
【发布时间】:2020-04-13 14:27:08
【问题描述】:

我有一个简单的插入查询,但 Visual Studio 返回“INSERT INTO 命令中的语法错误”,我将完全相同的查询复制并粘贴到数据库(访问)中,它可以工作......有帮助吗??

 public void Create(string mail, string nickname, string password, string avatar)
    {
        OleDbConnection cn = new OleDbConnection(_connectionString);
        OleDbCommand cmd = new OleDbCommand();
        try
        {

            String PwdSHA256;
            SHA256 mySHA256 = SHA256.Create();
            byte[] hashValue = mySHA256.ComputeHash(Encoding.UTF8.GetBytes(password));
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < hashValue.Length; i++)
            {
                builder.Append(hashValue[i].ToString("x2"));
            }
            PwdSHA256 = builder.ToString();

            cn.Open();
            cmd.Connection = cn;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "INSERT INTO utenti ([email],[nickname],[password],[avatar],[attivo]) " +
                "VALUES ('" + mail + "', '" + nickname + "', '" + PwdSHA256 + "','', false)";

            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            System.Web.HttpContext.Current.Session["errore"] = ex;
            System.Web.HttpContext.Current.Response.Redirect("ErrorPage.aspx");
            this._errore = ex.Message;
        }
        finally
        {
            cmd = null;
            cn.Close();
        }
    }

【问题讨论】:

  • 使用参数化语句或享受您的 SQL 注入攻击。
  • 首先,false 不是插入中的布尔值,而是字符串。其次,@FranzGleichmann 所说的。
  • 任何处理用户数据的程序员最终都会了解Bobby Tables。更多here

标签: c# sql asp.net ms-access


【解决方案1】:
  1. 直接在代码中使用 SQL 查询不是一个好的编码习惯,请使用 SQL 过程并将参数传递给 SQL。

  2. 请清楚,您面临的错误是执行时间错误或编译。

  3. 使用 dbo.Your_DB_Name.utenti 或 Your_DB_Name.utenti 代替 utenti。

  4. 总结你的“假”

  5. 你还在使用 PwdSHA256 加密吗

【讨论】:

    【解决方案2】:

    也许你应该改变

     cmd.CommandText = "INSERT INTO utenti (email,nickname,password,avatar,attivo) " +
                "VALUES ('" + mail + "', '" + nickname + "', '" + PwdSHA256 + "','', false)";
    

    并确保您在数据库中的列与您的查询相同

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多