转换参数DataRowView

时间:2018-07-01 03:15:39

标签: c# oracle x11

我一直试图插入此代码,但仍无法正常工作“无法将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();
        }
    }

该程序正常工作。

1 个答案:

答案 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);