2015-08-25 36 views
0

我在ASP.NET網站中使用MYSQL。我的SQLS腳本是表格的核心。的更新我使用下面的SQL命令:如何刪除MYSQL和asp.net中未使用的參數

UPDATE SET用戶活性= @活性,短= @短,userimage = @ userimage,adminunit = @ adminunit,admincc = @ admincc WHERE(ID = @ID);

在網站上,我得到的SQL,並用網站上的控件(文本框,複選框,下拉列表...)替換參數。這對於所有的控件都很有效,因爲它們總是有值。但是,USERIMAGE是一個圖像,我從文件上傳控件獲取信息。只要我選擇一個文件,它工作正常。

此代碼從控件讀取值,並將其保存在PARAMETERLIST:

     Case "GET" 
          If TypeOf control Is TextBox Then myParameterList.Add(New cParameter("@" + sField, CType(control, TextBox).Text)) 
          If TypeOf control Is CheckBox Then myParameterList.Add(New cParameter("@" + sField, CType(control, CheckBox).Checked)) 
          If TypeOf control Is DropDownList Then myParameterList.Add(New cParameter("@" + sField, CType(control, DropDownList).SelectedValue)) 
          If TypeOf control Is Image Then 
          End If 
          If TypeOf control Is FileUpload Then 
           If CType(control, FileUpload).HasFile Then 
            Dim filename As String = Path.GetFileName(CType(control, FileUpload).PostedFile.FileName) 
            Dim contentType As String = CType(control, FileUpload).PostedFile.ContentType 
            Using fs As Stream = CType(control, FileUpload).PostedFile.InputStream 
             Using br As New BinaryReader(fs) 
              Dim bytes As Byte() = br.ReadBytes(fs.Length) 
              myParameterList.Add(New cParameter("@" + sField.Replace("FileUploadControl".ToLower, ""), bytes)) 
             End Using 
            End Using 
           End If 
          End If 

這個代碼生成的SQL:

   With cmd 
        .Connection = Connection 
        .CommandType = CommandType.Text 
        For Each sParameter As cParameter In myParameterList 
         .Parameters.AddWithValue(sParameter.Name, sParameter.Value) 
        Next 
        .CommandText = sSQL 
       End With 

所以一般的SQL看起來是這樣的:

UPDATE user SET active = True,short = testname,userimage = System.Byte [],adminunit = True,admincc = False WHERE(id = 12);

但是,如果沒有圖像被選擇的SQL看起來像:

UPDATE用戶SET活性=真,短=測試名,userimage = @ userimage,adminunit =真,admincc =假WHERE(ID = 12) ;

在這種情況下,舊圖像丟失,數據庫字段userimage爲空。任何想法如何ELEGANT忽略/刪除未使用的參數?

謝謝!

回答

0

固定:改變了SQL到:userimage = IF(@userimage IS NULL,userimage,@userimage) -

相關問題