2017-05-03 7 views
0
SqlCommand sd1 = new SqlCommand("select sum(pric) from cart where uid='" + 
       Convert.ToInt32(Session["uid"]) + "'",con); 
// sd1.ExecuteNonQuery(); 
int var1 = Convert.ToInt32(sd1.ExecuteScalar()); 
+1

'セッション【 "UID"]'のための行が存在しないと思われます。 –

+0

なぜあなたは変換して、文字列をint型で連結しているのですか?どうしてどうしようとしないのですか? "カートからuid = '" + セッション["uid"] ToString()+ " "、... – Dave

答えて

0
  • にキャストすることはできません。キャスティングでこれを考慮する必要があります。以下は、nullが可能なintにキャストされるので、レコードが見つからなかった場合は表現できます。
  • また、クエリには文字列連結ではなくパラメータを使用します。

コード:

int? intResult; 
using(SqlCommand sd1 = new SqlCommand("select sum(pric) from cart where [email protected]", con)) 
{ 
    sd1.Parameters.Add(new SqlParameter("@uid", SqlDbType.Int){Value = Convert.ToInt32(Session["uid"])}); 
    var result = sd1.ExecuteScalar(); 
    intResult = Syste.DBNull.Value == result 
     ? (int?) null 
     : (int?) result; 
} 
関連する問題