C# ';第1行和第x27行的列的数据太长;当数据为1个字符时
当我尝试将数据输入表中的列时,尽管我的数据为5个字符且字段为varchar(8),但仍会出现错误“data too long”。我需要做哪些更改才能使其工作,就像我在命令中添加一个手表时一样,该字符仍然只有5个字符长 这是我的命令代码: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
[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
属性设置为正确的枚举成员。