Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无效例外C#_C#_Visual Studio - Fatal编程技术网

无效例外C#

无效例外C#,c#,visual-studio,C#,Visual Studio,我被这个问题困住了。请帮忙 OracleCommand cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandTimeout = 0; cmd.CommandText = "hhrcv_upsert_grv_sku"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("pv_delivery_bay_code", OracleDbType.Va

我被这个问题困住了。请帮忙

OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandTimeout = 0;
cmd.CommandText = "hhrcv_upsert_grv_sku";
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("pv_delivery_bay_code", OracleDbType.VarChar).Value = this.bayCode.ToString();
cmd.Parameters.Add("pn_company_id_no", OracleDbType.Number).Value = lblCompany_id_no.Text.ToString();
cmd.Parameters.Add("pn_order_no", OracleDbType.Number).Value = this.orderCode.ToString();
cmd.Parameters.Add("pn_sku_id_no", OracleDbType.Number).Value = lblSku_id_no.Text.ToString();
cmd.Parameters.Add("pn_price", OracleDbType.Number).Value = txtPrice.Text.ToString();

cmd.Parameters.Add(new OracleParameter("pv_error", OracleDbType.VarChar));
cmd.Parameters["pv_error"].Direction = ParameterDirection.Output;

string pv_error;

conn.Open();
cmd.ExecuteNonQuery();
pv_error = (string)cmd.Parameters["pv_error"].Value;

if (cmd.Parameters["pv_error"].Value.ToString().Equals("Invalid"))
{
    MessageBox.Show("Invalid");
}
else
{
    MessageBox.Show("valid");
}
在读取
pv_error=(string)cmd.Parameters[“pv_error”].Value的行上未处理获取InvalidCastException的操作

不知道如何修复

谢谢。

你可以这样试试

        OracleCommand cmd = new OracleCommand();
        cmd.Connection = conn;
        cmd.CommandTimeout = 0;
        cmd.CommandText = "hhrcv_upsert_grv_sku";
        cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add("pv_delivery_bay_code", OracleDbType.VarChar).Value = this.bayCode.ToString();
    cmd.Parameters.Add("pn_company_id_no", OracleDbType.Number).Value = lblCompany_id_no.Text.ToString();
    cmd.Parameters.Add("pn_order_no", OracleDbType.Number).Value = this.orderCode.ToString();
    cmd.Parameters.Add("pn_sku_id_no", OracleDbType.Number).Value = lblSku_id_no.Text.ToString();
    cmd.Parameters.Add("pn_price", OracleDbType.Number).Value = txtPrice.Text.ToString();

    var pv_error = cmd.Parameters.Add(new OracleParameter("pv_error", OracleDbType.VarChar));
    pv_error.Direction = ParameterDirection.Output;

    conn.Open();
    cmd.ExecuteNonQuery();


    if (pv_error.Value.ToString().Equals("Invalid"))
    {
        MessageBox.Show("Invalid");
    }
    else
    {
        MessageBox.Show("valid");
    }
你可以这样试试

        OracleCommand cmd = new OracleCommand();
        cmd.Connection = conn;
        cmd.CommandTimeout = 0;
        cmd.CommandText = "hhrcv_upsert_grv_sku";
        cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add("pv_delivery_bay_code", OracleDbType.VarChar).Value = this.bayCode.ToString();
    cmd.Parameters.Add("pn_company_id_no", OracleDbType.Number).Value = lblCompany_id_no.Text.ToString();
    cmd.Parameters.Add("pn_order_no", OracleDbType.Number).Value = this.orderCode.ToString();
    cmd.Parameters.Add("pn_sku_id_no", OracleDbType.Number).Value = lblSku_id_no.Text.ToString();
    cmd.Parameters.Add("pn_price", OracleDbType.Number).Value = txtPrice.Text.ToString();

    var pv_error = cmd.Parameters.Add(new OracleParameter("pv_error", OracleDbType.VarChar));
    pv_error.Direction = ParameterDirection.Output;

    conn.Open();
    cmd.ExecuteNonQuery();


    if (pv_error.Value.ToString().Equals("Invalid"))
    {
        MessageBox.Show("Invalid");
    }
    else
    {
        MessageBox.Show("valid");
    }
参数类型[“pv_错误”]。值可能不是字符串

pv_error = (string)cmd.Parameters["pv_error"].Value;
尝试将其替换为:

pv_error = cmd.Parameters["pv_error"].Value.ToString();
正如您在下一行中所做的。您必须测试是否有值!=null。

参数类型[“pv_错误”]。值可能不是字符串

pv_error = (string)cmd.Parameters["pv_error"].Value;
尝试将其替换为:

pv_error = cmd.Parameters["pv_error"].Value.ToString();

正如您在下一行中所做的。您必须测试是否有值!=空。

查看导致异常的
pv_error
的实际值会很有用,但由于
pv_error
是一个输出参数-如果没有“错误”,它将显示为
null
,因此会导致无效异常


我认为在设置之前进行一些检查可以解决问题。

查看导致异常的
pv\u error
的实际值会很有用,但是因为
pv\u error
是一个输出参数-如果没有“错误”,它将显示为
NULL
,因此会导致InvalidCastException

我认为在设置之前进行一些检查可以解决问题。

试试看

Convert.ToString(cmd.Parameters["pv_error"].Value)
Convert.ToString()处理空值。

试试看

Convert.ToString(cmd.Parameters["pv_error"].Value)

Convert.ToString()处理空值。

它是
字符串吗?在后面的代码中,您对其调用
ToString()
。如果不是
字符串
,这将是多余的。请尝试使用cmd.Parameters[“pv_error”].Value.ToString()。这是因为您正在使用字符串设置Oracle.Number类型的参数。调试器将准确地告诉您问题所在。请参阅
cmd.Parameters[“pv_error”]中的类型。值
。它是
字符串
?在后面的代码中,您对其调用
ToString()
。如果不是
字符串
,这将是多余的。请尝试使用cmd.Parameters[“pv_error”].Value.ToString()。这是因为您正在使用字符串设置Oracle.Number类型的参数。调试器将准确地告诉您问题所在。请参阅
cmd.Parameters[“pv_error”].Value
中的类型。