回答

收藏

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

本版积分规则