在ASP.NET中将图像添加到SQL数据库时出现问题
技术问答
334 人阅读
|
0 人回复
|
2023-09-12
|
我已经为此工作了一段时间了。我试图添加图像。SQL数据库。我知道这不是最好的方法,但我的老板真的希望这样做。我将添加图像表Image类型的5 F' D/ j$ y, d& u9 V" z
Image 列。3 `$ I6 X, [1 C. @! ^
这是我添加它的存储过程:
* |1 H/ C4 r0 Q! r' DALTER PROCEDURE pr_INSRT_Img (@Img image,@name varchar(50))ASBEGIN UPDATE usr SET Img= @Img WHERE disp_nm = @nameEND我的应用程序是ASP.NET 4.0.它的工作原理是用户选择AJAX( V8 B( ~( i+ v4 ^# T) c+ q' O
AsyncFileUpload和Image,控件UploadComplete函数上调用StoredProcedure进行操作INSERT。ASynchFileUPload位于gridview中的UpdatePanel中间的手风琴。" N/ @/ |( @7 h+ N" T) I* S5 n, c
UploadComplete:/ r# `$ |- Z) ?4 u$ W# ~! X6 D
protected void OnUpdateComplete(object sender,EventArgs e) Image ImgUser = new Image();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AsyncFileUpload asyncSender = new AsyncFileUpload();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UpdatePanel pnlinfo = new UpdatePanel();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AsyncFileUpload asyncGv = new AsyncFileUpload();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Accordion accordion = new Accordion();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Label lblName = new Label();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//finding the row of the sender asyncSender = (AsyncFileUpload)sender; foreach (GridViewRow Row in gvData.Rows) accordion = (Accordion)Row.Cells[0].FindControl("Accordion"); asyncGv = (AsyncFileUpload)accordion.FindControl("AsyncFileUpload"); if (asyncSender.ClientID == asyncGv.ClientID) ImgUser = (Image)accordion.FindControl("imgUser"); ImgUser.ImageUrl = asyncGv.FileName; lblName = (Label)Row.Cells[0].FindControl("lblPnlName"); bool IsWorking = InsertImage(asyncGv.FileBytes,lblName.Text); pnlinfo = (UpdatePanel)Row.Cells[0].FindControl("pnlInfo"); pnlinfo.Update(); break; } }InsertImage:
+ n/ Z8 G' }5 O pr_INSRT_Img SqlCommand cmd = new SqlCommand(ConfigManager.InsertImage); cmd.CommandType = CommandType.StoredProcedure; set the parameters cmd.Parameters.Add("@Img",SqlDbType.Image).Value = ImgData; cmd.Parameters.Add("@name",SqlDbType.VarChar).Value = Name; int ifWorks = DBUtils.ExecuteCmdScalar(cmd,ConfigManager.PhonebookSQLConnectionString); if (ifWorks != 0) return true; else return false;ASychFileUpload代码在其中ASPX部分:
5 x0 ], Y4 P9 o5 z% V4 l% z4 L. J+ Q5 n , C# Q0 o( n) x: r* w
我的问题是,当我上传图像时,ExecuteScalar() 返回0意味着图像没有插入表中。我试着放一个 varbinary(max)9 w8 h# |) ^- A/ d
字段而不是Image类型,但它不起作用。我能在网上找到的所有内容都告诉我使用代码或代码变体(我只是获取字节数组其他方法最简单的方法)。
+ j2 c$ A: w' s( J5 j$ P# O8 L总的来说,为什么?UPDATE失败,以及如何使它起作用。
7 Z' ~& H% y: I7 ?谢谢
& @8 U) K; J; @$ ?9 E , i& a7 b, b' D8 l; a
解决方案: |
|
|
|
|
|