我在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忽略/刪除未使用的參數?
謝謝!