Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ';第1行和第x27行的列的数据太长;当数据为1个字符时_C#_Mysql_Asp.net_Asp.net Mvc_Asp.net Core - Fatal编程技术网

C# ';第1行和第x27行的列的数据太长;当数据为1个字符时

C# ';第1行和第x27行的列的数据太长;当数据为1个字符时,c#,mysql,asp.net,asp.net-mvc,asp.net-core,C#,Mysql,Asp.net,Asp.net Mvc,Asp.net Core,当我尝试将数据输入表中的列时,尽管我的数据为5个字符且字段为varchar(8),但仍会出现错误“data too long”。我需要做哪些更改才能使其工作,就像我在命令中添加一个手表时一样,该字符仍然只有5个字符长 这是我的命令代码: [HttpPost] public IActionResult CreateCar(CarModel carModel) { if (ModelState.IsValid) { var co

当我尝试将数据输入表中的列时,尽管我的数据为5个字符且字段为varchar(8),但仍会出现错误“data too long”。我需要做哪些更改才能使其工作,就像我在命令中添加一个手表时一样,该字符仍然只有5个字符长

这是我的命令代码:

[HttpPost]
    public IActionResult CreateCar(CarModel carModel)
    {
        if (ModelState.IsValid)
        {
            var connection = new MySqlConnection(Configuration.GetConnectionString("MySqlConnection"));
            var command =
                "INSERT INTO `tblcars` (`reg`, `make`, `model`, `colour`, `type`, `fueltype`, `regDate`, `lastService`, `nextService`, `mileage`, `status`) VALUES ('@Reg', '@Make', '@Model', '@Colour', '@Type', '@FuelType', '@RegDate', '@LastService', '@NextService', '@Mileage', '@Status')";
            var cmd = new MySqlCommand(command, connection);
            cmd.Parameters.AddWithValue("@Reg", carModel.Reg.ToUpper(new CultureInfo("en-GB", false)));
            cmd.Parameters.AddWithValue("@Make", carModel.Make.ToUpper(new CultureInfo("en-GB", false)));
            cmd.Parameters.AddWithValue("@Model", carModel.Model.ToUpper(new CultureInfo("en-GB", false)));
            cmd.Parameters.AddWithValue("@Colour", carModel.Colour.ToUpper(new CultureInfo("en-GB", false)));
            cmd.Parameters.AddWithValue("@Type", carModel.Type.ToUpper(new CultureInfo("en-GB", false)));
            cmd.Parameters.AddWithValue("@FuelType", carModel.FuelType.ToUpper(new CultureInfo("en-GB", false)));
            cmd.Parameters.AddWithValue("@regDate", carModel.RegDate.ToString("yyyy-MM-dd hh:mm:ss"));
            cmd.Parameters.AddWithValue("@LastService", carModel.ServiceDate.ToString("yyyy-MM-dd hh:mm:ss"));
            cmd.Parameters.AddWithValue("@NextService", carModel.NextServiceDate.ToString("yyyy-MM-dd hh:mm:ss"));
            cmd.Parameters.AddWithValue("@Mileage", carModel.Mileage);
            cmd.Parameters.AddWithValue("@Status", carModel.Status);
            connection.Open();
            cmd.ExecuteNonQuery();
            connection.Dispose();
            cmd.Dispose();
            return RedirectToAction("CreateCarConfirmed");
        }

        return View();
    }

该视图被设置为仅接受显示字段太长的下拉选择。以下是视图代码(试图显示HTML时粘贴的文件):

感谢user@madreflection的评论,我发现参数周围有“字符”会阻止它用正确的参数替换它。我的新命令如下:

var command =
            "INSERT INTO tblcars (reg, make, model, colour, type, fueltype, regDate, lastService, nextService, mileage, status) VALUES (@Reg, @Make, @Model, @Colour, @Type, @FuelType, @RegDate, @LastService, @NextService, @Mileage, @Status)";

这些值的长度都不少于四个字符。例如,
“@Reg”
是一个4个字符的字符串文字,
“@Reg”
,而不是包含
@Reg
参数内容的字符串。删除
值列表中的撇号。非主题注释:,
carModel.NextServiceDate.ToString(“yyyy-MM-dd hh:MM:ss”)
存储为字符串的日期是邪恶的,对于MySQL,情况并非如此:@Selvin我如何才能将DateTime转换为一个字符串,我可以将其放入MySQL数据库的查询中,而不使用那种东西?当您将其作为参数传递时,请将其作为
DateTime
传递,而不是作为字符串传递<如果传递
DateTime
(即不要调用
ToString
),code>AddWithValue
MySqlDataType
属性设置为正确的枚举成员。