回答

收藏

在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
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则