2017-07-20 25 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 intOrderNo = 0; 
if(Session["sOrderNo"]!=null) 
{ 
    int.TryPasre(Session["sOrderNo"].ToString(), out intOrderNo); 
} 
+0

でも同じエラーが発生する – belle

+0

エラーが発生した行は何ですか? – Newyearnt

0

前に確認してください必要

を設定するとint型が存在しない、またはしません変数ordernoにセッション値を割り当てるときには、2つの可能性があります。

  1. Session["sOrderNo"]はまだ

  2. Session["sOrderNo"]は、任意の値が含まれていない初期化されていません。

ので、この2つのケースを処理するために最善の方法は、あなたがそのエラー行にブレークポイントを設定し、そのセッション変数の中にあるものを見てみたい

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

このコードは例外をスローすることもできますが、代わりに 'TryParse'を使用してください。 –

+0

@AlexanderHigginsとワットアウェイ? 、Convert.ToInt32'はnullreference例外をスローしませんし、 'exist'ケースを処理しています。どこが間違っていますか? – Webruster

+0

セッション["sOrderNo"] = "true"; intOrderNo = Convert.ToInt32(セッション["sOrderNo"]); –

関連する問題