我一直试图插入此代码,但仍无法正常工作“无法将DataRowView转换为in16”,我尝试使用int32,intParse()和Convert32()失败。
C#按钮:
private void btnaddPostulante_Click(object sender, RoutedEventArgs e)
{
using (OracleConnection ora = new OracleConnection(con))
{
try
{
ora.Open();
OracleCommand comando = new OracleCommand("insertarPostulante", ora);
comando.CommandType = CommandType.StoredProcedure;
comando.Parameters.Add("persona_rut", OracleType.VarChar).Value = txtrutPos.Text;
comando.Parameters.Add("persona_apellido_paterno", OracleType.VarChar).Value = txtappPos.Text;
comando.Parameters.Add("persona_apellido_materno", OracleType.VarChar).Value = txtapmPos.Text;
comando.Parameters.Add("persona_nombre", OracleType.VarChar).Value = txtnombrePos.Text;
comando.Parameters.Add("persona_fecha_nacimiento", OracleType.DateTime).Value = datePicker1.SelectedDate;
comando.Parameters.Add("id_nacionalidad", OracleType.Int16).Value = combonacionalidad.SelectedItem;
//fotos
comando.Parameters.Add("ano_subsidio", OracleType.Int16).Value = int.Parse(txtanoSubsidio.Text);
comando.Parameters.Add("id_estado_civil", OracleType.Int16).Value = comboestadoc.SelectedItem;
comando.Parameters.Add("telef_domicilio", OracleType.Int16).Value = int.Parse(txtfonoDomicilio.Text);
comando.Parameters.Add("telef_movil", OracleType.Int16).Value = int.Parse(txtfonoMovil.Text);
comando.Parameters.Add("telef_trabajo", OracleType.Int16).Value = int.Parse(txtfonoTrabajo.Text);
comando.Parameters.Add("email", OracleType.VarChar).Value = txtemail.Text;
comando.Parameters.Add("codigo_postal", OracleType.Int16).Value = int.Parse(txtcodigoPostal.Text);
comando.Parameters.Add("proceso_divorcio", OracleType.Char).Value = procDivorcio.SelectedItem.ToString();
comando.Parameters.Add("debe_acreditar_carga", OracleType.Char).Value = comboAcredCarga.SelectedItem.ToString();
comando.Parameters.Add("es_indigena", OracleType.Char).Value = acreIndigena.SelectedItem.ToString();
comando.Parameters.Add("posee_titulo", OracleType.Char).Value = acreEstudios.SelectedItem.ToString();
comando.Parameters.Add("calle", OracleType.VarChar).Value = txtcalle.Text;
comando.Parameters.Add("numero", OracleType.Int16).Value = int.Parse(txtnumero.Text);
comando.Parameters.Add("block", OracleType.VarChar).Value = txtblock.Text;
comando.Parameters.Add("nro_dpto", OracleType.Int16).Value = int.Parse(txtdept.Text);
comando.Parameters.Add("manzana", OracleType.VarChar).Value = txtmanzana.Text;
comando.Parameters.Add("sitio", OracleType.VarChar).Value = txtsitio.Text;
comando.Parameters.Add("nro_piso", OracleType.Int16).Value = int.Parse(txtnropisos.Text);
comando.Parameters.Add("id_comuna", OracleType.Int16).Value = combocomuna.SelectedItem;
comando.Parameters.Add("conyuge_rut", OracleType.VarChar).Value = txtrutCon.Text;
comando.Parameters.Add("nombre_titulo", OracleType.VarChar).Value = txttitulo.Text;
comando.Parameters.Add("nombre_institucion", OracleType.VarChar).Value = txtinstitucion.Text;
comando.Parameters.Add("id_tipo_titulo", OracleType.Char).Value = comboTipoTitulo.SelectedItem.ToString();
comando.Parameters.Add("id_direccion", OracleType.Int16).Value = int.Parse(txtidDireccion.Text);
comando.ExecuteNonQuery();
MessageBox.Show("Postulante Agregado");
}
catch(Exception ex)
{
MessageBox.Show("A handled exception just occurred: " + ex.Message, "Exception Sample", MessageBoxButton.OK, MessageBoxImage.Warning);
}
ora.Close();
}
}
该程序正常工作。
答案 0 :(得分:0)
如果要将其转换为int16,请尝试以下帮助方法
public static int MyToInt16(object o)
{
if (o == DBNull.Value || o == null)
return 0;
return Convert.ToInt16(o);
}
用法
comando.Parameters.Add("ano_subsidio", OracleType.Int16).Value = MyToInt16(txtanoSubsidio.Text);