Reputation: 23
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");
}
}
The problem is conversion failed when converting date and/or time from character string
Upvotes: 0
Views: 494
Reputation: 3443
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.
Ideally, you should
Upvotes: 0
Reputation: 6398
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
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:
DateTime.Parse(DateEnterTechnical.Text)
Also, your code is subject to SQL injection. Considering using SqlParameters.
Upvotes: 1