如何删除MYSQL和asp.net

时间:2015-08-25 14:12:12

标签: mysql asp.net parameters

我在一个ASP.NET网站上使用MYSQL。我的SQLS脚本是表格的核心。对于UPDATE,我使用以下SQL命令:

UPDATE用户SET active = @ active,short = @ short,userimage = @ userimage,adminunit = @ adminunit,admincc = @ admincc WHERE(id = @ID);

在网站上,我获取SQL并将参数替换为网站上的控件(文本框,复选框,下拉列表...)。这对所有控件都很有效,因为它们总是有值。但USERIMAGE是一个图像,我从fileupload控件获取信息。只要我选择一个文件就可以了。

此代码从控件中读取值并将其保存在参数列表中:

                        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用户SET active = True,short = testname,userimage = System.Byte [],adminunit = True,admincc = False WHERE(id = 12);

但如果没有选择图像,则SQL看起来像:

UPDATE用户SET active = True,short = testname,userimage = @ userimage,adminunit = True,admincc = False WHERE(id = 12);

在这种情况下,旧图像将丢失,并且databasefield userimage 为null。任何想法如何 ELEGANT 忽略/删除未使用的参数?

谢谢你!

1 个答案:

答案 0 :(得分:0)

已修复:将SQL更改为:userimage = IF(@userimage IS NULL,userimage,@ userimage) -