2013-07-06 56 views
0

我在一个按钮单击中插入图像文件和声音文件。我正在为该任务调用两个存储过程。但问题首先是图像被保存在数据库中,然后声音文件覆盖它。声音文件没有保存在为其分配的单元格中。无法将二进制值插入到SQL Server 2008中

两个存储过程:

ALTER PROCEDURE [dbo].[InsertImageIntoServiceRequest] 
(@ServiceRequestID int, 
@FileName nvarchar(150), 
@Image varbinary(max)) 
AS 
BEGIN 
update ServiceRequest 
set [email protected], [Image][email protected] 
where [email protected] 
END 

ALTER PROCEDURE [dbo].[InsertSoundIntoServiceRequest] 
(@ServiceRequestID int, 
@FileName nvarchar(150), 
@Sound varbinary(max)) 
AS 
BEGIN 
update ServiceRequest 
set [email protected], [email protected] 
where [email protected] 
END 

当我调试我的ASP.net应用程序,我发现,同时节省了声音文件InsertImageIntoServiceRequest也越来越打来电话,声音文件与图像文件重叠。

请提出建议。

+0

我想补充一点。我通过会话变量将图像和声音文件传递给存储过程。 – Chandrima

+0

你在这张桌子上有触发器吗? –

+0

没有... @Gordon Linoff – Chandrima

回答

0

@Saksham 我写了3种方法:每个插入图像和声音一个,一个用于调用这两种方法。

[System.ComponentModel.DataObjectMethodAttribute (System.ComponentModel.DataObjectMethodType.Insert,假)] 公共BOOL InsertImage(INT ServiceRequestID,字符串文件名,字节[]图像) { 尝试 { INT I = Adapter.InsertImageIntoServiceRequest(ServiceRequestID,Filename,image); if(i> 0) return true; 返回false; } catch { return false; } }

[System.ComponentModel.DataObjectMethodAttribute (System.ComponentModel.DataObjectMethodType.Insert,假)] 公共BOOL InsertSound(INT ServiceRequestID,字符串文件名,字节[]声音) { 尝试 { string file = Filename.Replace('','_'); int i = Adapter.InsertImageIntoServiceRequest(ServiceRequestID,file,sound); if(i> 0) return true; 返回false; } catch { return false; }}

这两种方法都在这里称为:

[System.ComponentModel.DataObjectMethodAttribute (System.ComponentModel.DataObjectMethodType.Insert,真)] 公众诠释CreateServiceRequest(字符串用户名,字符串EMail,字符串CenterIPIN,int ServiceType,int ServiceStatus,字符串Notes,DataTable图像,DataTable声音) int rowsAffected; 尝试 rowsAffected =(int)适配器。CreateServiceRequest(用户名,EMail,CenterIPIN,ServiceType,ServiceStatus,Notes);

 ServiceRequestBLL srb = new ServiceRequestBLL(); 
     if (image != null) 
     { 
      foreach (DataRow dr in image.Rows) 
      { 
       srb.InsertImage(rowsAffected, dr["Filename"].ToString(), (byte[])dr["Image"]); 
      } 
     } 
     if (sound != null) 
     { 
      foreach (DataRow dr1 in sound.Rows) 
      { 
       try 
       { 
        srb.InsertSound(rowsAffected, dr1["Filename"].ToString(), (byte[])dr1["Sound"]); 
       } 
       catch (Exception ex) 
       { 
        rowsAffected = 0; 
       } 
      } 
     } 

    } 
    catch 
    { 
     rowsAffected = 0; 
    } 

返回的RowsAffected = 1;

} 
+0

我已经解决了这个问题。这是我在C#代码中的错。不管怎样,谢谢。 – Chandrima

相关问题