C# 错误:指定的强制转换无效(Asp net、c、SQL)
确保会话[sOrderNo]上有值。看起来它不存在或值不可转换为整数 您可以做的是:C# 错误:指定的强制转换无效(Asp net、c、SQL),c#,asp.net,sql-server,visual-studio-2013,C#,Asp.net,Sql Server,Visual Studio 2013,确保会话[sOrderNo]上有值。看起来它不存在或值不可转换为整数 您可以做的是: SqlConnection con = new SqlConnection(@"Data Source=DESKTOP-IBPJNA2;Initial Catalog=GeometryFINAL;Integrated Security=True"); SqlCommand cmd; SqlDataReader rdr; int intOrderNo = (int)Session["sOrder
SqlConnection con = new SqlConnection(@"Data Source=DESKTOP-IBPJNA2;Initial Catalog=GeometryFINAL;Integrated Security=True");
SqlCommand cmd;
SqlDataReader rdr;
int intOrderNo = (int)Session["sOrderNo"]; //error is here
String strSql = "SELECT iProductID FROM orderItemsTable WHERE iOrderNo = " + intOrderNo;
cmd = new SqlCommand(strSql, con);
会话[sOrderNo]不存在,或者在设置 你需要先检查一下
SqlConnection con = new SqlConnection(@"Data Source=DESKTOP-IBPJNA2;Initial Catalog=GeometryFINAL;Integrated Security=True");
SqlCommand cmd;
SqlDataReader rdr;
if (Session["sOrderNo"] != null)
{
int intOrderNo = 0;
bool result = Int32.TryParse(Session["sOrderNo"], out intOrderNo );
if (result)
{
String strSql = "SELECT iProductID FROM orderItemsTable WHERE iOrderNo = " + intOrderNo;
cmd = new SqlCommand(strSql, con);
}
else
{
//values are not convertable to integer....
}
}
else
{
//your session variable doesn't exist....
}
在将会话值分配给变量orderno时,可能有两种情况 会话[sOrderNo]尚未初始化 会话[sOrderNo]不包含任何值 因此,为了处理这两种情况,最好的方法是
int intOrderNo = 0;
if(Session["sOrderNo"]!=null)
{
int.TryPasre(Session["sOrderNo"].ToString(), out intOrderNo);
}
您希望在该错误行设置断点,并查看该会话变量内的内容。此代码也可能引发异常,请改用TryParse。@AlexanderHiggins in wat away,Convert.ToInt32不会引发nullreference异常,我正在处理存在情况。。那么哪里可能出错呢;intOrderNo=Convert.ToInt32Session[sOrderNo];或者这个:公共类OrderNo{};会话[sOrderNo]=新订单号;intOrderNo=Convert.ToInt32Session[sOrderNo]@AlexanderHiggins实际上你说的只是另一种表达方式,
int intOrderNo = 0;
if(Session["sOrderNo"]!=null)
{
intOrderNo = Convert.ToInt32(Session["sOrderNo"]);
}