2017-07-20 45 views
0
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); 
+3

你要设定在错误行一个破发点,看看有什么是会话变量里面。 – Win

回答

1

确保您的Session["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.... 
}   
0

会议[ “sOrderNo”]不存在,或者不是int类型,当你设置

你需要检查之前

int intOrderNo = 0; 
if(Session["sOrderNo"]!=null) 
{ 
    int.TryPasre(Session["sOrderNo"].ToString(), out intOrderNo); 
} 
+0

虽然 – belle

+0

仍然出现同样的错误,你有什么错误? – Newyearnt

0

在将会话值分配给变量orderno时,可能有两种可能的情况

  1. Session["sOrderNo"]尚未初始化

  2. Session["sOrderNo"]不包含任何价值。

所以为了处理这两种情况下最可能的方式是

int intOrderNo = 0; 
if(Session["sOrderNo"]!=null) 
{ 
    intOrderNo = Convert.ToInt32(Session["sOrderNo"]); 
} 
+0

此代码也可以引发异常,请改用TryParse。 –

+0

@亚历山大希金斯在笏离开? ,'Convert.ToInt32'不会抛出nullreference异常,并且我正在处理'存在'的情况..所以它可能出错哪里呢? – Webruster

+0

Session [“sOrderNo”] =“true”; intOrderNo = Convert.ToInt32(Session [“sOrderNo”]); –