2017-02-24 3 views
0

을 업로드 할 이미지의 시간에 내 업데이트 쿼리에서 오류를 가지고있다 :나는 이것에 대한 해결책을 찾고 있지만 여전히이 내 갱신 버튼을 클릭 이벤트입니다

private void btnUpdate_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       if (ValidateAll()) 
       { 
        SetValues(); 
        _objHotel_EL.HotelID = HotelId; 
        _objHotel_EL.CommandName = "Update_HotelDetails"; 

        int update = _objHotel_BL.Insert_Hotel(_objHotel_EL); 

        if (update > 0) 
        { 
         MessageBox.Show("Hotel Details Updated"); 
         ClearAll(); 
        } 
        else 
        { 
         MessageBox.Show("Already Exists"); 
         ClearAll(); 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 

여기에서 설정하고 이미지를 업로드하는 데 사용됩니다 내 코드입니다 및 기타 매개 변수 :

private byte[] ReadFile(string strPath) 
     { 
      byte[] data = null; 
      FileInfo fInfo = new FileInfo(strPath); 
      long numBytes = fInfo.Length; 
      FileStream fstream = new FileStream(strPath, FileMode.Open, FileAccess.Read); 
      BinaryReader br = new BinaryReader(fstream); 
      data = br.ReadBytes((int)numBytes); 
      return data; 
     } 

O를 제발 도와주세요 : 이것은 ReadFile을의 코드

private void SetValues() 
     { 
      _objHotel_EL.HotelName = txtHotelName.Text.Trim(); 
      _objHotel_EL.PhoneNo = txtPhoneNo.Text.Trim(); 
      _objHotel_EL.Address = txtAddress.Text.Trim(); 
      _objHotel_EL.EmailId = txtEmailId.Text.Trim(); 
      _objHotel_EL.WebSite = txtWebsite.Text.Trim(); 
      _objHotel_EL.CurrID = CommanValue.CurrID; 

      if (flag == 1) 
      { 
       _objHotel_EL.BinaryImage = ReadFile(labelImagePath.Text); 
       _objHotel_EL.ImagePath = labelImagePath.Text; 
      } 
      else 
      { 
       if (imageData == null) 
       { 
        string path = System.AppDomain.CurrentDomain.BaseDirectory.Replace("\\Debug", ""); 
        path = path.Replace("\\bin", ""); 
        path = path.Replace("\\x86", ""); 
        path = path + "Images\\NoImage1.png"; 
        labelImagePath.Text = path; 
        imageData = ReadFile(labelImagePath.Text); 
        _objHotel_EL.ImagePath = path; 
       } 
       _objHotel_EL.ImagePath = labelImagePath.Text; 
       _objHotel_EL.BinaryImage = (byte[])imageData; 
      } 
     } 

입니다 유언은 내게 오류 The conversion is not supported. [ Type to convert from (if known) = nvarchar, Type to convert to (if known) = image ]주고 있기 때문에 Visual Studio 2012에서 C#을 사용하여 SQL 서버 소형 사용하고 있습니다.

데이터베이스 측면에서 이미지의 데이터 유형은 이미지입니다.

+0

* ReadFile * 함수의 반환 유형은 무엇입니까? –

+0

ReadFile 메서드 코드 표시 –

+0

내 질문이 업데이트되었습니다. –

답변

0

사실 나는 SqlCeCommand 매개 변수를 사용하고 해결 한 후 직접 시도했습니다. 다음은 코드입니다.

if (objEL.CommandName == "Update_HotelDetails") 
      { 
       DataTable dt = SqlHelper.ExecuteDataset("SELECT HotelName, HotelID FROM Master_Hotel WHERE (HotelName = '" + objEL.HotelName + "') AND (HotelID <> '" + objEL.HotelID + "')").Tables[0]; 
       if (dt.Rows.Count == 0) 
       { 
        string str = ("UPDATE Master_Hotel SET HotelName = @HotelName, PhoneNo = @PhoneNo, Address = @Address, EmailId = @EmailId, Website = @Website, Image = @Image,ImagePath = @ImagePath WHERE (HotelID = @HotelID)"); 

        cmd = new SqlCeCommand(str, SqlHelper.objCon); 

        cmd.Parameters.Add("@HotelName", SqlDbType.NVarChar).Value = objEL.HotelName; 
        cmd.Parameters.Add("@PhoneNo", SqlDbType.NVarChar).Value = objEL.PhoneNo; 
        cmd.Parameters.Add("@Address", SqlDbType.NVarChar).Value = objEL.Address; 
        cmd.Parameters.Add("@EmailId", SqlDbType.NVarChar).Value = objEL.EmailId; 
        cmd.Parameters.Add("@Website", SqlDbType.NVarChar).Value = objEL.WebSite; 
        cmd.Parameters.Add("@Image", SqlDbType.Image).Value = objEL.BinaryImage; 
        cmd.Parameters.Add("@ImagePath", SqlDbType.NVarChar).Value = objEL.ImagePath; 
        cmd.Parameters.Add("@HotelID", SqlDbType.Int).Value = objEL.HotelID; 
        SqlHelper.objCon.Open(); 
        i = cmd.ExecuteNonQuery(); 
        SqlHelper.objCon.Close(); 
       } 
      }