[英]Conversion failed when converting date and/or time from character string in C#
This is the connection class: 这是连接类:
public string InsertarTecnico(int IdNumTecnico, string NombresTecnico, string ApellidosTecnico, string DireccionTecnico, string TelefonoTecnico, string ProvinciaTecnico, string CiudadTecnico, string TipoTecnico, string FechaTecnico)
{
string salida = "Datos guardados";
try
{
cmd = new SqlCommand("Insert into TECNICO(NUMIDTECNICO, NOMBRETECNICO, APELLIDOTECNICO, DIRECCIONTECNICO, TELEFONOTECNICO, PROVINCIATECNICO, CIUDADTECNICO, FECHAYHORATECNICO, TIPO) values(" + IdNumTecnico + ", '" + NombresTecnico + "', '" + ApellidosTecnico + "', '" + DireccionTecnico + "', '"+TelefonoTecnico+"', '" + ProvinciaTecnico + "', '"+CiudadTecnico+"', '" + TipoTecnico + "', '" + FechaTecnico + "')", cn);
cmd.Parameters.AddWithValue("@FechaTecnico", DateTime.Now);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
salida = "No se puedo duardar los datos... " + ex.ToString();
}
return salida;
}
This is the control code: 这是控制代码:
private void SaveTechnicalButton_Click(object sender, EventArgs e)
{
if (Conex.TecnicoRegistrado(Convert.ToInt32(IdTechnical.Text))==0)
{
MessageBox.Show(Conex.InsertarTecnico(Convert.ToInt32(IdTechnical.Text), NameTechnical.Text, LastNameTechnical.Text, AdressTechnical.Text, PhoneTechnical.Text, ProvinceTechnical.Text, CityTechnical.Text, SelectChiefTechnical.Text, DateTime.Parse(DateEnterTechnical.Text)));
}
else
{
MessageBox.Show("La persona que intenta ingresar ya se encuentra registrada");
}
}
enter image description here 在此处输入图片说明
The problem is conversion failed when converting date and/or time from character string 问题是从字符串转换日期和/或时间时转换失败
The order of the arguments are incorrect: 参数的顺序不正确:
MessageBox.Show(Conex.InsertarTecnico(Convert.ToInt32(IdTechnical.Text), NameTechnical.Text, LastNameTechnical.Text, AdressTechnical.Text, PhoneTechnical.Text, CityTechnical.Text, ProvinceTechnical.Text, PhoneTechnical.Text, DateEnterTechnical.Text));
InsertarTecnico(int IdNumTecnico, string NombresTecnico, string ApellidosTecnico, string DireccionTecnico, string TelefonoTecnico, string ProvinciaTecnico, string CiudadTecnico, string FechaTecnico, string TipoTecnico)
You are passing DateEnterTechnical to TipoTecnico and twice TelefonoTechnico 您正在将DateEnterTechnical传递给TipoTecnico和两次TelefonoTechnico
The order seem to be: 顺序似乎是:
MessageBox.Show(Conex.InsertarTecnico(Convert.ToInt32(IdTechnical.Text), NameTechnical.Text, LastNameTechnical.Text, AdressTechnical.Text, PhoneTechnical.Text, ProvinceTechnical.Text, CityTechnical.Text, DateTime.Parse(DateEnterTechnical.Text), tipoTecnico));
Make sure to parse the DateEnterTechnical to DateTime: 确保将DateEnterTechnical解析为DateTime:
DateTime.Parse(DateEnterTechnical.Text)
Also, your code is subject to SQL injection . 此外,您的代码还可以进行SQL注入 。 Considering using SqlParameters . 考虑使用SqlParameters 。
You have to properly reformat text that is taken from DateEnterTechnical.Text
control and passed to InsertarTecnico
function as the last argument string TipoTecnico
- as your date cannot be recognized by the database. 您必须正确地重新格式化从DateEnterTechnical.Text
控件获取并作为最后一个参数string TipoTecnico
传递给InsertarTecnico
函数的文本,因为数据库无法识别您的日期。
Ideally, you should 理想情况下,您应该
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.