2011-09-06 6 views
0

을 사용할 수 없습니다 : VARBINARY (최대)로 데이터 형식 NVARCHAR에서암시 적 변환은 내가 아래의 코드에서 다음과 같은 오류를 얻고있다

암시 적 변환은 허용되지 않습니다. CONVERT 함수를 사용하여이 쿼리를 실행합니다.

protected void btnOKImageUpload_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     string filePath = ""; 
     string fileName = ""; 

     int UserId = Convert.ToInt32(hdnUserId.Value); 
     if (fileImage.HasFile) 
     { 
      if (CheckFileType(fileImage.FileName)) 
      { 
       filePath = Server.MapPath(Application["UploadFolder"].ToString()); 
       if (UserId > -1) 
       { 
        fileName = "Image_" + UserId.ToString() + Path.GetExtension(fileImage.FileName); 
       } 
       else 
       { 
        fileName = Path.GetFileName(fileImage.FileName); 
       } 
       string virFileName = Application["UploadFolder"].ToString() + "/" + fileName; 
       string tmpFileName = Path.Combine(filePath, fileName); 
       fileImage.SaveAs(tmpFileName); 
       SessionData.LocationFloorPlanFile = tmpFileName; 

       DataAccess.SaveEmployeeImage(UserId, fileName); 

       hdnImageFileName.Value = fileName; 
       txtImageUpload.Text = virFileName; 
       //btnFloorPlanView.HRef = hdnFloorPlan.Value; 
       btnImageUpload.Disabled = true; 
       btnImageDelete.Enabled = true; 
       hdnPostbackAction.Value = "UPLOAD"; 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     hdnErrMsg.Value = ex.Message; 
     //"An error has occurred while processing your request. Please contact support for further assistance."; 
    } 
}                 
public static void SaveEmployeeImage(int userId, string imageFilePath) 
{ 
    ArrayList paramaters = getParamArray(); 
    paramaters.Add(getParam("@userId", DbType.Int32, userId)); 
    paramaters.Add(getParam("@imageFilePath", DbType.AnsiString, imageFilePath)); 

    executeNonQuery("xp_SaveEmployeeImage", paramaters); 
} 

내 절차는 테이블에 삽입, 사용자 ID와 이미지를합니다.

변경해야 할 데이터 유형은 무엇입니까?

+1

당신의 sproc 모양은 어떻습니까? –

+2

문자열 값을 데이터베이스에 보내는 것 같습니다. 바이트 배열이 아니겠습니까? – Tejs

+3

당신이'ArrayList'를 사용하고 더러워진 것을 보았습니다. –

답변

0

음, 문제가 발생한 지점 인 AnsiString 데이터 유형으로 해당 이미지를 전달하고 있습니다.

DbType.Binary가 필요하다고 생각합니다.

그러나 매개 변수 이름은 imageFilePath이므로 실제로는 파일 경로를 문자열로 지정해야할까요? 이것은 귀하의 XP가 실제로 잘못되었음을 의미 할 수 있습니다.

+0

예 FileName의 문자열을 사용합니다. – Indra

+0

위에 게시 한 코드를 수정 해 주시겠습니까? – Indra

+0

사용중인 확장 프로 시저에 대한 코드가 정말로 필요합니다. 내 생각 엔 SQL Server에서 사용할 수있는 로컬 또는 네트워크 경로로 이미지를 복사 한 다음 해당 경로를 proc에 전달해야합니다. –

관련 문제