在ASP.NET中将图像添加到SQL数据库时出现问题
技术问答
263 人阅读
|
0 人回复
|
2023-09-12
|
我已经为此工作了一段时间了。我试图添加图像。SQL数据库。我知道这不是最好的方法,但我的老板真的希望这样做。我将添加图像表Image类型的5 d/ Z- A# x7 @
Image 列。( d! n4 Z4 B* ~) N% w3 I {: U' P' S, l
这是我添加它的存储过程: L$ @0 I6 m) K9 X2 S3 L
ALTER PROCEDURE pr_INSRT_Img (@Img image,@name varchar(50))ASBEGIN UPDATE usr SET Img= @Img WHERE disp_nm = @nameEND我的应用程序是ASP.NET 4.0.它的工作原理是用户选择AJAX) S8 G- I3 O( Y) L. g
AsyncFileUpload和Image,控件UploadComplete函数上调用StoredProcedure进行操作INSERT。ASynchFileUPload位于gridview中的UpdatePanel中间的手风琴。- M8 q' o( p* W3 n* h$ f% H4 x* L) Q
UploadComplete:- U, u. G3 c8 [+ |+ h* E
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:
. L& `9 j4 j9 v& n3 q 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部分:
* B- n: R; `( J' n ( t. r8 L* j4 V; ~1 N/ m. w0 @
我的问题是,当我上传图像时,ExecuteScalar() 返回0意味着图像没有插入表中。我试着放一个 varbinary(max)
/ Y: q0 N* v6 W A6 j字段而不是Image类型,但它不起作用。我能在网上找到的所有内容都告诉我使用代码或代码变体(我只是获取字节数组其他方法最简单的方法)。, n* {2 w* L# R. G& H
总的来说,为什么?UPDATE失败,以及如何使它起作用。( g- z$ O: b# D: H: ~' C6 g' M9 ^5 ~
谢谢& v* x5 J e: a$ Q6 w
; a; W- o6 I5 [2 e9 C3 y) D
解决方案: |
|
|
|
|
|