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: 未将对象引用设置到对象的实例。 不晓得是什么原因啊!各路大侠救救本菜鸟!
cmd.Parameters.Add(pnamePram);
cmd.Parameters.Add(ptypePram);
cmd.Parameters.Add(psizePram);
cmd.Parameters.Add(purlPram);
建议你把断点设置到这块看看吧,肯定有一个为空的!