无效例外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
中的类型。