string saveCate = bigDDL.SelectedValue.ToString().Trim();
                string path = Server.MapPath("~/CategoryImages/") + saveCate + "/" + filename;//获取文件在服务器上的物理地址
                string wpath = "CategoryImages\\" + saveCate + "\\" + filename;//获取图片在服务器上的虚拟路径(放数据库里的)
                imgFileUpload.PostedFile.SaveAs(path);                Stream sr = hp.InputStream;//创建数据流对象
                byte[] b = new byte[uplength];  //定义byte型数组
                //将图片数据放到b数组对象实例中,其中0代表数组指针的起始位置,uplength表示要读取流的长度(指针的结束位置)
                sr.Read(b, 0, uplength);                SqlConnection imgcon = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=Database;Integrated Security=True;Trusted_Connection=Yes;");
                imgcon.Open();
                string imgsql = "insert into ImageTable(picture,psize,pname,ptype,purl,ArtId) values(@picture,@psize,@pname,@ptype,@purl,'" + this.Session["artId"].ToString().Trim() + "') ";
                SqlCommand cmd = new SqlCommand(imgsql, imgcon);
                SqlParameter picturePram = new SqlParameter("@picture", SqlDbType.Image);
                SqlParameter pnamePram = new SqlParameter("@pname", SqlDbType.NVarChar);
                SqlParameter ptypePram = new SqlParameter("@ptype", SqlDbType.NVarChar);
                SqlParameter psizePram = new SqlParameter("@psize", SqlDbType.Int);
                SqlParameter purlPram = new SqlParameter("@purl", SqlDbType.NVarChar);
                picturePram.Value = b;
                pnamePram.Value = filename;
                ptypePram.Value = "image/" + fileExtension;
                psizePram.Value = uplength;
                purlPram.Value = wpath;                cmd.Parameters.Add(picturePram);
                cmd.Parameters.Add(pnamePram);
                cmd.Parameters.Add(ptypePram);
                cmd.Parameters.Add(psizePram);
                cmd.Parameters.Add(purlPram);
                cmd.ExecuteNonQuery();
                imgcon.Close();
                imgcon.Dispose();
                Response.Write("<script language=javascript>alert('入库成功!')</script>");可是最后运行结果提示string imgsql = "insert into ImageTable(picture,psize,pname,ptype,purl,ArtId) values(@picture,@psize,@pname,@ptype,@purl,'" + this.Session["artId"].ToString().Trim() + "') ";
这句话中   System.NullReferenceException: 未将对象引用设置到对象的实例。 不晓得是什么原因啊!各路大侠救救本菜鸟!

解决方案 »

  1.   

    不可能的,除非不是这句话报错, 如果真是这句话报错,只能是Session["artId"]为null
      

  2.   

                    cmd.Parameters.Add(picturePram);
                    cmd.Parameters.Add(pnamePram);
                    cmd.Parameters.Add(ptypePram);
                    cmd.Parameters.Add(psizePram);
                    cmd.Parameters.Add(purlPram);  

    建议你把断点设置到这块看看吧,肯定有一个为空的!
      

  3.   

    找到了!不好意思是Session["artId"]值为空,可是Session不是可以页面间传递值的吗?