【问题标题】:You have an error in your SQL syntax check the manual that corresponds to your MariaDB server version for the right syntax to use near '[Id]您的 SQL 语法有错误,请检查与您的 MariaDB 服务器版本相对应的手册,以获取在 '[Id] 附近使用的正确语法
【发布时间】:2016-07-01 18:27:00
【问题描述】:

我遇到了这个案例的错误问题。我想将 MySql 与 Visual Studio 连接起来。当我在浏览器上运行我的程序时,它说, “您的 SQL 语法有错误;请查看与您的 MariaDB 服务器版本相对应的手册,以了解在 '[Id] 附近使用的正确语法 ,[名] ,[姓] '在第 1 行"

这是源错误:

这是我的代码: POST:/帐户/登录

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Login(LoginModel model, string returnUrl)
    {

        // if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
        // {
        //    return RedirectToLocal(returnUrl);
        // }

        // If we got this far, something failed, redisplay form
        string query = @"
                 SELECT [Id]
                ,[FirstName]
                ,[LastName]
                ,[MiddleName]
                ,[FullName]
                ,[Usercol]
                ,[Title]
                ,[PersonalEmailAddress]
                ,[OfficialEmailAddress]
                ,[JobTitle]
                ,[HomePhone]
                ,[MobilePhone]
                ,[OfficePhone]
                ,[PhotoUrl]
                ,[UTCConversionTimeZoneCode]
                ,[APIToken]
                ,[Country]
                ,[UserName]
                ,[Password]
                ,[CRMUserId]
            FROM User WHERE UserName = @UserName AND Password = @Password
            ";

        UserModels UserModel = null;

        using (IDbConnection db = new MySqlConnection(ConfigurationManager.ConnectionStrings["CRMPORTALSQLCONN"].ConnectionString))
        {
            UserModel = (UserModels)db.Query<UserModels>(query, new
            {
                @UserName = model.UserName,
                @Password = model.Password
            }).FirstOrDefault();
        }        
        ModelState.AddModelError("", "The user name or password provided is incorrect.");
        return View(model);
    }

如果有人能告诉我我做错了哪一部分,我将不胜感激。 问候

【问题讨论】:

  • 我无法识别将列名括在 [括号] 中的语法。尝试在没有它们的情况下重写您的 SELECT 语句。

标签: c# mysql .net


【解决方案1】:

如果我理解正确,您使用的语法是 SQL Server 数据库而不是 MySQL

为 MySQL 重写 SQL 查询如下:

SELECT   `Id`
         ,`FirstName`
         ,`LastName`
         ,`MiddleName`
         ,`FullName`
         ,`Usercol`
         ,`Title`
         ,`PersonalEmailAddress`
         ,`OfficialEmailAddress`
         ,`JobTitle`
         ,`HomePhone`
         ,`MobilePhone`
         ,`OfficePhone`
         ,`PhotoUrl`
         ,`UTCConversionTimeZoneCode`
         ,`APIToken`
         ,`Country`
         ,`UserName`
         ,`Password`
         ,`CRMUserId`
 FROM `User` WHERE `UserName` = @UserName AND `Password` = @Password;

[] 替换为反引号(`)

【讨论】:

  • 它有帮助,实际上它不需要反引号(SELECT Id、FirstName 等),我在 MySql 上测试后才意识到这一点。干杯伙伴!
  • 是的,它可以在没有反引号的情况下工作,也只有当您不使用空格、MySQL 关键字和其他特殊字符作为列名和表名时。在 MySQL 中查询时使用 back ticket 是一种很好的做法。
猜你喜欢
  • 2018-07-13
  • 1970-01-01
  • 2021-05-12
  • 2018-11-27
  • 1970-01-01
  • 2020-02-05
  • 2019-10-24
  • 2017-02-11
  • 2012-05-02
相关资源
最近更新 更多